Agentic Platform
Documentation API reference Tools Skills

Tools

SpeedWorkers Page History

speedworkers_page_history MCP Url data

Get the SpeedWorkers indexation history of URLs: when they were cached, with which status code and whether they could be served to bots.

List the past indexations of one or more URLs by Botify SpeedWorkers, newest first: date, whether the page was stored in the cache, HTTP status code returned by the origin, device variant, page size, matching cache behavior, whether the page could be served to bots (and why not), canonical URL, next refresh and expiration times, fetching and rendering times. Pass every URL in a single call. Each call scans the SpeedWorkers indexation table once, however many URLs it lists, so calling this tool with several URLs at once is what keeps the number of scans down. SpeedWorkers stores the history under the URL resolved before caching (ignored query parameters removed...): by default each URL is resolved first, and the requested URL is used when the resolved one has no history. Each event has an `event_id`: pass it to `speedworkers_page_snapshot` to get the HTML stored during this indexation. Use `speedworkers_page_preview` for the page currently delivered to bots. The project must have SpeedWorkers enabled.

Playground

POST
item
urls required

URLs to get the SpeedWorkers indexation history of. Pass several URLs in one call: they are read in a single scan of the indexation table. One call returns at most 10000 events (URLs x limit). Resolving URLs counts each URL twice, once for the resolved form and once for the requested one.

days

Number of past days to look for indexation events in.

limit

Maximum number of indexation events to return per URL, newest first.

resolve_url

Resolve each URL the way SpeedWorkers does before caching it (ignored query parameters removed...), since the indexation history is stored under the resolved URL.

Credits

Fixed cost per call, plus the data read from the SpeedWorkers indexation table. That table is scanned once per call, however many URLs the call lists, so grouping URLs in one call is what keeps this down.

These usage SKUs can be charged on a call, including SKUs from tools this one may call.

SKU Credits Description Used by
Tool call 1 per request Charged once per successful item, on top of any usage below.
  • This tool
Data scanned 6,250 per TiB scanned Analytical queries are billed on the volume of data the query reads, not on the rows it returns: a narrow filter over a large table can still scan the whole table.
Query billed to your cloud project 4 per query A flat fee per query run in your organization's own cloud project, in place of the charge on the data it scans.

Schemas

item is what you send, config how the tool behaves, and the response is what you get back.

Item

object
Properties
urls array required

URLs to get the SpeedWorkers indexation history of. Pass several URLs in one call: they are read in a single scan of the indexation table. One call returns at most 10000 events (URLs x limit). Resolving URLs counts each URL twice, once for the resolved form and once for the requested one.

min items 1, max items 1000

days integer

Number of past days to look for indexation events in.

Default: 15

min 1, max 90

limit integer

Maximum number of indexation events to return per URL, newest first.

Default: 50

min 1, max 500

resolve_url boolean

Resolve each URL the way SpeedWorkers does before caching it (ignored query parameters removed...), since the indexation history is stored under the resolved URL.

Default: true

Example
{
  "urls": [
    "string"
  ],
  "days": 15,
  "limit": 50,
  "resolve_url": true
}

Response

object
Properties
pages array required

Indexation history of each requested URL, in the order given

Items: SpeedWorkersUrlHistory

Example
{
  "pages": [
    {
      "queried_url": "string",
      "resolved_url": null,
      "events": [],
      "reason": null
    }
  ]
}

Type Definitions

2 types

These are the available sub-object types that can be used in the properties above.

SpeedWorkersIndexationEvent object
#
event_id string required

Opaque ID of the indexation event. Pass it to the `speedworkers_page_snapshot` tool to get the HTML SpeedWorkers stored during this indexation.

indexed_at string | null

When the indexation happened

Default: null

indexed boolean | null

Whether the page was stored in the SpeedWorkers cache

Default: null

http_code integer | null

HTTP status code returned by the origin

Default: null

device string | null

Device variant (desktop, mobile, na)

Default: null

page_size integer | null

Page size, in bytes

Default: null

section_id string | null

ID of the matching cache behavior (section)

Default: null

section_name string | null

Name of the matching cache behavior (section)

Default: null

ready_to_be_served boolean | null

Whether the page can be served to bots (indexed, a servable status code, and no failed or errored quality control)

Default: null

not_ready_to_be_served_reason string | null

Why the page cannot be served to bots (status_code, quality_controls, not_indexed)

Default: null

not_deliverable_reason string | null

Why the page would not be delivered to bots (e.g. not_cached, quality_controls_failed, last_refresh_5xx). `delivered` when it was delivered, `cached` when it was served from cache with no blocking reason.

Default: null

canonical_url string | null

Canonical URL found in the page

Default: null

canonical_equal boolean | null

Whether the canonical URL is the page URL

Default: null

next_refresh_time string | null

When the page is due for a refresh

Default: null

expiration_time string | null

When the cached page expires

Default: null

ttl_minutes integer | null

Time between the indexation and the next refresh, in minutes

Default: null

time_to_fetch_ms integer | null

Time spent fetching the page, in ms

Default: null

time_to_render_ms integer | null

Time spent rendering the page, in ms

Default: null

SpeedWorkersUrlHistory object
#
queried_url string required

The URL from the request

resolved_url string | null

The URL as resolved by SpeedWorkers before caching, when it differs from the requested one

Default: null

events array

Indexation events, newest first

Items: SpeedWorkersIndexationEvent

Default: []

reason string | null

Why no indexation event was returned, if any

Default: null

Endpoints

POST http://agents.botify.com/{organization}/{project}/speedworkers_page_history/process
POST http://agents.botify.com/{organization}/{project}/speedworkers_page_history/batch_process
POST http://agents.botify.com/{organization}/{project}/speedworkers_page_history/async_process
POST http://agents.botify.com/{organization}/{project}/speedworkers_page_history/async_batch_process

See running a long job in the background for the polling flow.

cURL

curl -X POST "http://agents.botify.com/{organization}/{project}/speedworkers_page_history/process" \
  -H "Authorization: Bearer $BOTIFY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "item": {
    "urls": []
  }
}'

Over MCP

This tool is exposed as the MCP tool speedworkers_page_history. An MCP client passes organization, project and item as tool arguments. Set up MCP →

Raw metadata