APIs at Apify

One API client, access to thousands of tools. That's Apify API. Get access to various web scraping and web automation tools called Actors using a single API client.

Powering the world’s top data-driven teams

Built to be API-first

The Apify API is your control plane for web automation. Start Actors, monitor runs, and fetch results over clean REST. JSON in, structured data out — SDKs optional.

Run Actors with one call

Trigger sync or async runs, pass input, and follow status to completion. Use IDs or username~name and get a run object you can track.

Structured results in any format

Read from datasets or key-value stores and export as JSON, CSV, XLSX, or RSS. Paginate and filter right in the request.

Clients that handle the hard parts

Official JavaScript and Python clients manage auth, retries, and backoff automatically, with helpers like .call() and .listItems() to keep code tiny.

Secure and scalable by default

Authenticate with Bearer tokens and rely on clear rate limits plus automatic retries — built to power serious workloads without surprises.

JavaScript API client

The official library to interact with Apify API from a web browser, Node.js, JavaScript, or Typescript applications.

Get started

Python API client

The official library to interact with Apify API from a Python applications.

Get started
Baked in scheduling & monitoring

Set your scrapers to run hourly, daily, or on custom intervals - automatically.

Proxies for reliability

Smart proxy rotation is built in, so you won't hit limits or get blocked.

Scalable plans

As your projects grow, we are able to accommodate. Scrape as much as you need.

Frequently asked questions

Control Actors, tasks, and storage over REST. Start runs, monitor status, fetch logs, and read/write datasets, key-value stores, and request queues. Results come as JSON or exportable CSV/XLSX/XML/RSS. Use synchronous runs for fast results or asynchronous runs for longer jobs at scale.

Use your API token in the header: Authorization: Bearer . Find it in Console → Settings → Integrations. You may pass ?token= in the URL, but headers are safer since URLs leak in logs and history. Never share tokens; rotate them if exposure is suspected.

POST to /v2/acts/:actorId/runs (async) or /run-sync (sync). Track progress via /v2/actor-runs/:runId and fetch items from /v2/datasets/:datasetId/items returned in the run. Prefer the JS/Python clients’ .call() and .listItems() helpers for simpler code, retries, and timeouts.