Trackers are account-owned, recurring collections from public or logged-in web pages. Create and manage them in Dashboard → Trackers. The REST API can only read their state and retained verified results; it cannot create, run, pause, resume, delete, or configure one. The endpoints keep their original web-data-feeds path so existing clients keep working.
Both endpoints require the API key of the account that owns the trackers, on a plan that includes trackers. A tracker identifier owned by another account is reported as 404, exactly like one that does not exist. Reading stored data never contacts the source website, and a failed newer collection does not erase the last good result. Existing clients may continue using the compatibility alias /v1/custom-data-sets.
Your trackers
GET /v1/web-data-feeds
Lists the account's trackers, including their schedule, source access (public or authenticated), visibility (public when Equibles may show the latest verified result to anyone, otherwise private), and latest run state.
Parameters: none.
curl "https://api.equibles.com/v1/web-data-feeds" \
-H "Authorization: Bearer eq_your_api_key"import requests
r = requests.get(
"https://api.equibles.com/v1/web-data-feeds",
headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())const res = await fetch("https://api.equibles.com/v1/web-data-feeds", {
headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());Response trimmed to two of the account's 22 trackers; an account with no trackers returns {"data": []}:
{
"data": [
{
"id": "744786dc-7a54-4abf-8675-38f272529345",
"name": "EnergyTrend solar-price daily prices",
"status": "active",
"access": "public",
"visibility": "private",
"intervalHours": 24,
"nextRunAt": "2026-10-14T10:04:50.066685Z",
"latestRunStatus": "Succeeded",
"failureReason": null,
"latestVerifiedAt": "2026-10-13T10:04:50.928948Z"
},
{
"id": "10ee9181-6e45-4838-9efa-ebac776d2293",
"name": "Palantir Product Development open roles from jobs.lever.co",
"status": "active",
"access": "public",
"visibility": "private",
"intervalHours": 24,
"nextRunAt": "2026-10-14T10:05:50.953096Z",
"latestRunStatus": "Succeeded",
"failureReason": null,
"latestVerifiedAt": "2026-10-13T10:05:51.680431Z"
}
]
}
Tracker result
GET /v1/web-data-feeds/{id}
Returns the latest successful stored result for one account-owned tracker. Pass at to retrieve the newest verified capture completed at or before a past instant. sources contains the exact pages captured for that result. normalizedData is the recommended consumption shape: repeated non-identity values appear once under shared, each item under rows contains only row-varying fields, declared numbers and booleans use native JSON types, and declared dates are ISO yyyy-MM-dd strings (a date whose day and month could swap, with nothing on its page settling the order, is null and listed under unavailable with reason not_unique, or keeps its displayed text when it identifies the row). Field names differ by tracker. The original verified extraction envelope remains under data for v1 compatibility and evidence auditing. A legacy result that cannot satisfy the stricter normalized type contract returns normalizedData: null without suppressing data.
History is retained for at most 12 months and is also bounded to the newest 4,000 collection observations and 20 MB per tracker. When a bound is reached, the oldest observations are removed first. Deleting a tracker in the Portal permanently deletes all of its retained history.
Parameters: id (required in the path; tracker identifier from GET /v1/web-data-feeds); at (optional ISO-8601 timestamp, for example 2026-08-31T18:00:00Z; returns the latest retained verified capture completed at or before that instant).
curl "https://api.equibles.com/v1/web-data-feeds/10ee9181-6e45-4838-9efa-ebac776d2293" \
-H "Authorization: Bearer eq_your_api_key"import requests
r = requests.get(
"https://api.equibles.com/v1/web-data-feeds/10ee9181-6e45-4838-9efa-ebac776d2293",
headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())const res = await fetch("https://api.equibles.com/v1/web-data-feeds/10ee9181-6e45-4838-9efa-ebac776d2293", {
headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());Response for a tracker that collects one team's open roles from a public jobs page, trimmed to the first of 13 rows in the original data envelope and the first two of 13 normalizedData.rows; shared holds the value every row repeats:
{
"id": "10ee9181-6e45-4838-9efa-ebac776d2293",
"name": "Palantir Product Development open roles from jobs.lever.co",
"capturedAt": "2026-10-13T10:05:51.680431Z",
"sources": [
"https://jobs.lever.co/palantir/?team=Product%20Development"
],
"data": {
"NothingStated": false,
"Rows": [
{
"Values": [
{
"Field": "job_title",
"Value": "Forward Deployed Engineer - Mixed Reality",
"Quote": "Forward Deployed Engineer - Mixed Reality",
"SourceUrl": "https://jobs.lever.co/palantir/?team=Product%20Development"
},
{
"Field": "location",
"Value": "Washington, D.C.",
"Quote": "Washington, D.C.",
"SourceUrl": "https://jobs.lever.co/palantir/?team=Product%20Development"
},
{
"Field": "workplace_type",
"Value": "On-site",
"Quote": "On-site — ",
"SourceUrl": "https://jobs.lever.co/palantir/?team=Product%20Development"
},
{
"Field": "commitment",
"Value": "Full-time",
"Quote": "Full-time",
"SourceUrl": "https://jobs.lever.co/palantir/?team=Product%20Development"
}
]
}
]
},
"normalizedData": {
"nothingStated": false,
"shared": {
"commitment": "Full-time"
},
"rows": [
{
"job_title": "Forward Deployed Engineer - Mixed Reality",
"location": "Washington, D.C.",
"workplace_type": "On-site"
},
{
"job_title": "Forward Deployed Reliability Engineer",
"location": "New York, NY",
"workplace_type": "Hybrid"
}
]
}
}
To read historical data, add the optional cutoff; this request returns the capture completed at 2026-09-30T16:50:44.122305Z:
curl "https://api.equibles.com/v1/web-data-feeds/10ee9181-6e45-4838-9efa-ebac776d2293?at=2026-10-01T00%3A00%3A00Z" \
-H "Authorization: Bearer eq_your_api_key"
An identifier the account does not own returns the ownership-safe not-found envelope:
curl "https://api.equibles.com/v1/web-data-feeds/00000000-0000-0000-0000-000000000000" \
-H "Authorization: Bearer eq_your_api_key"
{
"error": {
"code": "not_found",
"message": "No tracker 00000000-0000-0000-0000-000000000000 on this account. List yours at GET /v1/web-data-feeds.",
"status": 404
}
}
Compatibility aliases
The /v1/custom-data-sets routes are the older spelling of the tracker routes. They run the same actions with the same parameters, ownership checks and responses, including the optional at cutoff, and remain available to existing v1 clients.
| Alias | Same as |
|---|---|
GET /v1/custom-data-sets |
Your trackers, GET /v1/web-data-feeds |
GET /v1/custom-data-sets/{id} |
Tracker result, GET /v1/web-data-feeds/{id} |