apify
Run Apify Actors (web scrapers, crawlers, automation tools) and retrieve their results using the Apify REST API with curl. Use when the user wants to scrape a website, extract data from the web, run an Apify Actor, crawl pages, or get results from Apify datasets.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install openclaw-skills-apify
Repository
Skill path: skills/bmestanov/apify
Run Apify Actors (web scrapers, crawlers, automation tools) and retrieve their results using the Apify REST API with curl. Use when the user wants to scrape a website, extract data from the web, run an Apify Actor, crawl pages, or get results from Apify datasets.
Open repositoryBest for
Primary workflow: Analyze Data & AI.
Technical facets: Full Stack, Backend, Data / AI.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: openclaw.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install apify into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/openclaw/skills before adding apify to shared team environments
- Use apify for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: apify
description: Run Apify Actors (web scrapers, crawlers, automation tools) and retrieve their results using the Apify REST API with curl. Use when the user wants to scrape a website, extract data from the web, run an Apify Actor, crawl pages, or get results from Apify datasets.
homepage: https://docs.apify.com/api/v2
metadata:
{
"openclaw":
{
"emoji": "🐝",
"primaryEnv": "APIFY_TOKEN",
"requires": { "anyBins": ["curl", "wget"], "env": ["APIFY_TOKEN"] },
},
}
---
# Apify
Run any of the 17,000+ Actors on [Apify Store](https://apify.com/store) and retrieve structured results via the REST API.
Full OpenAPI spec: [openapi.json](openapi.json)
## Authentication
All requests need the `APIFY_TOKEN` env var. Use it as a Bearer token:
```bash
-H "Authorization: Bearer $APIFY_TOKEN"
```
Base URL: `https://api.apify.com`
## Core workflow
### 1. Find the right Actor
Search the Apify Store by keyword:
```bash
curl -s "https://api.apify.com/v2/store?search=web+scraper&limit=5" \
-H "Authorization: Bearer $APIFY_TOKEN" | jq '.data.items[] | {name: (.username + "/" + .name), title, description}'
```
Actors are identified by `username~name` (tilde) in API paths, e.g. `apify~web-scraper`.
### 2. Get Actor README and input schema
Before running an Actor, fetch its default build to get the README (usage docs) and input schema (expected JSON fields):
```bash
curl -s "https://api.apify.com/v2/acts/apify~web-scraper/builds/default" \
-H "Authorization: Bearer $APIFY_TOKEN" | jq '.data | {readme, inputSchema}'
```
`inputSchema` is a JSON-stringified object — parse it to see required/optional fields, types, defaults, and descriptions. Use this to construct valid input for the run.
You can also get the Actor's per-build OpenAPI spec (no auth required):
```bash
curl -s "https://api.apify.com/v2/acts/apify~web-scraper/builds/default/openapi.json"
```
### 3. Run an Actor (async — recommended for most cases)
Start the Actor and get the run object back immediately:
```bash
curl -s -X POST "https://api.apify.com/v2/acts/apify~web-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://example.com"}],"maxPagesPerCrawl":10}'
```
Response includes `data.id` (run ID), `data.defaultDatasetId`, `data.status`.
Optional query params: `?timeout=300&memory=4096&maxItems=100&waitForFinish=60`
- `waitForFinish` (0-60): seconds the API waits before returning. Useful to avoid polling for short runs.
### 4. Poll run status
```bash
curl -s "https://api.apify.com/v2/actor-runs/RUN_ID?waitForFinish=60" \
-H "Authorization: Bearer $APIFY_TOKEN" | jq '.data | {status, defaultDatasetId}'
```
Terminal statuses: `SUCCEEDED`, `FAILED`, `ABORTED`, `TIMED-OUT`.
### 5. Get results
**Dataset items** (most common — structured scraped data):
```bash
curl -s "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&limit=100" \
-H "Authorization: Bearer $APIFY_TOKEN"
```
Or directly from the run (shortcut — same parameters):
```bash
curl -s "https://api.apify.com/v2/actor-runs/RUN_ID/dataset/items?clean=true&limit=100" \
-H "Authorization: Bearer $APIFY_TOKEN"
```
Params: `format` (`json`|`csv`|`jsonl`|`xml`|`xlsx`|`rss`), `fields`, `omit`, `limit`, `offset`, `clean`, `desc`.
**Key-value store record** (screenshots, HTML, OUTPUT):
```bash
curl -s "https://api.apify.com/v2/key-value-stores/STORE_ID/records/OUTPUT" \
-H "Authorization: Bearer $APIFY_TOKEN"
```
**Run log:**
```bash
curl -s "https://api.apify.com/v2/logs/RUN_ID" \
-H "Authorization: Bearer $APIFY_TOKEN"
```
### 6. Run Actor synchronously (short-running Actors only)
For Actors that finish within 300 seconds, get dataset items in one call:
```bash
curl -s -X POST "https://api.apify.com/v2/acts/apify~web-scraper/run-sync-get-dataset-items?timeout=120" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://example.com"}],"maxPagesPerCrawl":5}'
```
Returns the dataset items array directly (not wrapped in `data`). Returns `408` if the run exceeds 300s.
Alternative: `/run-sync` returns the KVS `OUTPUT` record instead of dataset items.
## Quick recipes
### Scrape a website
```bash
curl -s -X POST "https://api.apify.com/v2/acts/apify~web-scraper/run-sync-get-dataset-items?timeout=120" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://example.com"}],"maxPagesPerCrawl":20}'
```
### Google search
```bash
curl -s -X POST "https://api.apify.com/v2/acts/apify~google-search-scraper/run-sync-get-dataset-items?timeout=120" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries":"site:example.com openai","maxPagesPerQuery":1}'
```
### Long-running Actor (async with polling)
```bash
# 1. Start
RUN=$(curl -s -X POST "https://api.apify.com/v2/acts/apify~web-scraper/runs?waitForFinish=60" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://example.com"}],"maxPagesPerCrawl":500}')
RUN_ID=$(echo "$RUN" | jq -r '.data.id')
# 2. Poll until done
while true; do
STATUS=$(curl -s "https://api.apify.com/v2/actor-runs/$RUN_ID?waitForFinish=60" \
-H "Authorization: Bearer $APIFY_TOKEN" | jq -r '.data.status')
echo "Status: $STATUS"
case "$STATUS" in SUCCEEDED|FAILED|ABORTED|TIMED-OUT) break;; esac
done
# 3. Fetch results
curl -s "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?clean=true" \
-H "Authorization: Bearer $APIFY_TOKEN"
```
### Abort a run
```bash
curl -s -X POST "https://api.apify.com/v2/actor-runs/RUN_ID/abort" \
-H "Authorization: Bearer $APIFY_TOKEN"
```
## Paid / rental Actors
Some Actors require a monthly subscription before they can be run. If the API returns a permissions or payment error for an Actor, ask the user to manually subscribe via the Apify Console:
```
https://console.apify.com/actors/ACTOR_ID
```
Replace `ACTOR_ID` with the Actor's ID (e.g. `AhEsMsQyLfHyMLaxz`). The user needs to click **Start** on that page to activate the subscription. Most rental Actors offer a free trial period set by the developer.
You can get the Actor ID from the store search response (`data.items[].id`) or from `GET /v2/acts/username~name` (`data.id`).
## Error handling
- **401**: `APIFY_TOKEN` missing or invalid.
- **404 Actor not found**: check `username~name` format (tilde, not slash). Browse https://apify.com/store.
- **400 run-failed**: check `GET /v2/logs/RUN_ID` for details.
- **402/403 payment required**: the Actor likely requires a subscription. See "Paid / rental Actors" above.
- **408 run-timeout-exceeded**: sync endpoints have a 300s limit. Use async workflow instead.
- **429 rate-limit-exceeded**: retry with exponential backoff (start at 500ms, double each time).
## Additional resources
- API docs (LLM-friendly): https://docs.apify.com/api/v2.md
- OpenAPI spec: [openapi.json](openapi.json)
- Apify Store (browse Actors): https://apify.com/store
---
## Referenced Files
> The following files are referenced in this skill and included for context.
### openapi.json
```json
{
"openapi": "3.1.2",
"info": {
"title": "Apify API",
"license": {
"name": "Apache 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
},
"description": "\nThe Apify API (version 2) provides programmatic access to the [Apify\nplatform](https://docs.apify.com). The API is organized\naround [RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer)\nHTTP endpoints.\n\nYou can download the complete OpenAPI schema of Apify API in the [YAML](http://docs.apify.com/api/openapi.yaml) or [JSON](http://docs.apify.com/api/openapi.json) formats. The source code is also available on [GitHub](https://github.com/apify/apify-docs/tree/master/apify-api/openapi).\n\nAll requests and responses (including errors) are encoded in\n[JSON](http://www.json.org/) format with UTF-8 encoding,\nwith a few exceptions that are explicitly described in the reference.\n\n- To access the API using [Node.js](https://nodejs.org/en/), we recommend the [`apify-client`](https://docs.apify.com/api/client/js) [NPM\npackage](https://www.npmjs.com/package/apify-client).\n- To access the API using [Python](https://www.python.org/), we recommend the [`apify-client`](https://docs.apify.com/api/client/python) [PyPI\npackage](https://pypi.org/project/apify-client/).\n\nThe clients' functions correspond to the API endpoints and have the same\nparameters. This simplifies development of apps that depend on the Apify\nplatform.\n\n:::note Important Request Details\n\n- `Content-Type` header: For requests with a JSON body, you must include the `Content-Type: application/json` header.\n\n- Method override: You can override the HTTP method using the `method` query parameter. This is useful for clients that can only send `GET` requests. For example, to call a `POST` endpoint, append `?method=POST` to the URL of your `GET` request.\n\n:::\n\n## Authentication\n<span id=\"/introduction/authentication\"></span>\n\nYou can find your API token on the\n[Integrations](https://console.apify.com/account#/integrations) page in the\nApify Console.\n\nTo use your token in a request, either:\n\n- Add the token to your request's `Authorization` header as `Bearer <token>`.\nE.g., `Authorization: Bearer xxxxxxx`.\n[More info](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization).\n(Recommended).\n- Add it as the `token` parameter to your request URL. (Less secure).\n\nUsing your token in the request header is more secure than using it as a URL\nparameter because URLs are often stored\nin browser history and server logs. This creates a chance for someone\nunauthorized to access your API token.\n\n**Do not share your API token or password with untrusted parties.**\n\nFor more information, see our\n[integrations](https://docs.apify.com/platform/integrations) documentation.\n\n## Basic usage\n<span id=\"/introduction/basic-usage\"></span>\n\nTo run an Actor, send a POST request to the [Run\nActor](#/reference/actors/run-collection/run-actor) endpoint using either the\nActor ID code (e.g. `vKg4IjxZbEYTYeW8T`) or its name (e.g.\n`janedoe~my-actor`):\n\n`https://api.apify.com/v2/acts/[actor_id]/runs`\n\nIf the Actor is not runnable anonymously, you will receive a 401 or 403\n[response code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status).\nThis means you need to add your [secret API\ntoken](https://console.apify.com/account#/integrations) to the request's\n`Authorization` header ([recommended](#/introduction/authentication)) or as a\nURL query parameter `?token=[your_token]` (less secure).\n\nOptionally, you can include the query parameters described in the [Run\nActor](#/reference/actors/run-collection/run-actor) section to customize your\nrun.\n\nIf you're using Node.js, the best way to run an Actor is using the\n`Apify.call()` method from the [Apify\nSDK](https://sdk.apify.com/docs/api/apify#apifycallactid-input-options). It\nruns the Actor using the account you are currently logged into (determined\nby the [secret API token](https://console.apify.com/account#/integrations)).\nThe result is an [Actor run\nobject](https://sdk.apify.com/docs/typedefs/actor-run) and its output (if\nany).\n\nA typical workflow is as follows:\n\n1. Run an Actor or task using the [Run\nActor](#/reference/actors/run-collection/run-actor) or [Run\ntask](#/reference/actor-tasks/run-collection/run-task) API endpoints.\n2. Monitor the Actor run by periodically polling its progress using the [Get\nrun](#/reference/actor-runs/run-object-and-its-storages/get-run) API\nendpoint.\n3. Fetch the results from the [Get\nitems](#/reference/datasets/item-collection/get-items) API endpoint using the\n`defaultDatasetId`, which you receive in the Run request response.\nAdditional data may be stored in a key-value store. You can fetch them from\nthe [Get record](#/reference/key-value-stores/record/get-record) API endpoint\nusing the `defaultKeyValueStoreId` and the store's `key`.\n\n**Note**: Instead of periodic polling, you can also run your\n[Actor](#/reference/actors/run-actor-synchronously) or\n[task](#/reference/actor-tasks/runs-collection/run-task-synchronously)\nsynchronously. This will ensure that the request waits for 300 seconds (5\nminutes) for the run to finish and returns its output. If the run takes\nlonger, the request will time out and throw an error.\n\n## Response structure\n<span id=\"/introduction/response-structure\"></span>\n\nMost API endpoints return a JSON object with the `data` property:\n\n```\n{\n \"data\": {\n ...\n }\n}\n```\n\nHowever, there are a few explicitly described exceptions, such as\n[Get dataset items](#/reference/datasets/item-collection/get-items) or\nKey-value store [Get record](#/reference/key-value-stores/record/get-record)\nAPI endpoints, which return data in other formats.\nIn case of an error, the response has the HTTP status code in the range of\n4xx or 5xx and the `data` property is replaced with `error`. For example:\n\n```\n{\n \"error\": {\n \"type\": \"record-not-found\",\n \"message\": \"Store was not found.\"\n }\n}\n```\n\nSee [Errors](#/introduction/errors) for more details.\n\n## Pagination\n<span id=\"/introduction/pagination\"></span>\n\nAll API endpoints that return a list of records\n(e.g. [Get list of\nActors](#/reference/actors/actor-collection/get-list-of-actors))\nenforce pagination in order to limit the size of their responses.\n\nMost of these API endpoints are paginated using the `offset` and `limit`\nquery parameters.\nThe only exception is [Get list of\nkeys](#/reference/key-value-stores/key-collection/get-list-of-keys),\nwhich is paginated using the `exclusiveStartKey` query parameter.\n\n**IMPORTANT**: Each API endpoint that supports pagination enforces a certain\nmaximum value for the `limit` parameter,\nin order to reduce the load on Apify servers.\nThe maximum limit could change in future so you should never\nrely on a specific value and check the responses of these API endpoints.\n\n### Using offset\n<span id=\"/introduction/pagination/using-offset\"></span>\n\nMost API endpoints that return a list of records enable pagination using the\nfollowing query parameters:\n\n<table>\n <tr>\n <td><code>limit</code></td>\n <td>Limits the response to contain a specific maximum number of items, e.g. <code>limit=20</code>.</td>\n </tr>\n <tr>\n <td><code>offset</code></td>\n <td>Skips a number of items from the beginning of the list, e.g. <code>offset=100</code>.</td>\n </tr>\n <tr>\n <td><code>desc</code></td>\n <td>\n By default, items are sorted in the order in which they were created or added to the list.\n This feature is useful when fetching all the items, because it ensures that items\n created after the client started the pagination will not be skipped.\n If you specify the <code>desc=1</code> parameter, the items will be returned in the reverse order,\n i.e. from the newest to the oldest items.\n </td>\n </tr>\n</table>\n\nThe response of these API endpoints is always a JSON object with the\nfollowing structure:\n\n```\n{\n \"data\": {\n \"total\": 2560,\n \"offset\": 250,\n \"limit\": 1000,\n \"count\": 1000,\n \"desc\": false,\n \"items\": [\n { 1st object },\n { 2nd object },\n ...\n { 1000th object }\n ]\n }\n}\n```\n\nThe following table describes the meaning of the response properties:\n\n<table>\n <tr>\n <th>Property</th>\n <th>Description</th>\n </tr>\n <tr>\n <td><code>total</code></td>\n <td>The total number of items available in the list.</td>\n </tr>\n <tr>\n <td><code>offset</code></td>\n <td>The number of items that were skipped at the start.\n This is equal to the <code>offset</code> query parameter if it was provided, otherwise it is <code>0</code>.</td>\n </tr>\n <tr>\n <td><code>limit</code></td>\n <td>The maximum number of items that can be returned in the HTTP response.\n It equals to the <code>limit</code> query parameter if it was provided or\n the maximum limit enforced for the particular API endpoint, whichever is smaller.</td>\n </tr>\n <tr>\n <td><code>count</code></td>\n <td>The actual number of items returned in the HTTP response.</td>\n </tr>\n <tr>\n <td><code>desc</code></td>\n <td><code>true</code> if data were requested in descending order and <code>false</code> otherwise.</td>\n </tr>\n <tr>\n <td><code>items</code></td>\n <td>An array of requested items.</td>\n </tr>\n</table>\n\n### Using key\n<span id=\"/introduction/pagination/using-key\"></span>\n\nThe records in the [key-value\nstore](https://docs.apify.com/platform/storage/key-value-store)\nare not ordered based on numerical indexes,\nbut rather by their keys in the UTF-8 binary order.\nTherefore the [Get list of\nkeys](#/reference/key-value-stores/key-collection/get-list-of-keys)\nAPI endpoint only supports pagination using the following query parameters:\n\n<table>\n <tr>\n <td><code>limit</code></td>\n <td>Limits the response to contain a specific maximum number items, e.g. <code>limit=20</code>.</td>\n </tr>\n <tr>\n <td><code>exclusiveStartKey</code></td>\n <td>Skips all records with keys up to the given key including the given key,\n in the UTF-8 binary order.</td>\n </tr>\n</table>\n\nThe response of the API endpoint is always a JSON object with following\nstructure:\n\n```\n{\n \"data\": {\n \"limit\": 1000,\n \"isTruncated\": true,\n \"exclusiveStartKey\": \"my-key\",\n \"nextExclusiveStartKey\": \"some-other-key\",\n \"items\": [\n { 1st object },\n { 2nd object },\n ...\n { 1000th object }\n ]\n }\n}\n```\n\nThe following table describes the meaning of the response properties:\n\n<table>\n <tr>\n <th>Property</th>\n <th>Description</th>\n </tr>\n <tr>\n <td><code>limit</code></td>\n <td>The maximum number of items that can be returned in the HTTP response.\n It equals to the <code>limit</code> query parameter if it was provided or\n the maximum limit enforced for the particular endpoint, whichever is smaller.</td>\n </tr>\n <tr>\n <td><code>isTruncated</code></td>\n <td><code>true</code> if there are more items left to be queried. Otherwise <code>false</code>.</td>\n </tr>\n <tr>\n <td><code>exclusiveStartKey</code></td>\n <td>The last key that was skipped at the start. Is `null` for the first page.</td>\n </tr>\n <tr>\n <td><code>nextExclusiveStartKey</code></td>\n <td>The value for the <code>exclusiveStartKey</code> parameter to query the next page of items.</td>\n </tr>\n</table>\n\n## Errors\n<span id=\"/introduction/errors\"></span>\n\nThe Apify API uses common HTTP status codes: `2xx` range for success, `4xx`\nrange for errors caused by the caller\n(invalid requests) and `5xx` range for server errors (these are rare).\nEach error response contains a JSON object defining the `error` property,\nwhich is an object with\nthe `type` and `message` properties that contain the error code and a\nhuman-readable error description, respectively.\n\nFor example:\n\n```\n{\n \"error\": {\n \"type\": \"record-not-found\",\n \"message\": \"Store was not found.\"\n }\n}\n```\n\nHere is the table of the most common errors that can occur for many API\nendpoints:\n\n<table>\n <tr>\n <th>status</th>\n <th>type</th>\n <th>message</th>\n </tr>\n <tr>\n <td><code>400</code></td>\n <td><code>invalid-request</code></td>\n <td>POST data must be a JSON object</td>\n </tr>\n <tr>\n <td><code>400</code></td>\n <td><code>invalid-value</code></td>\n <td>Invalid value provided: Comments required</td>\n </tr>\n <tr>\n <td><code>400</code></td>\n <td><code>invalid-record-key</code></td>\n <td>Record key contains invalid character</td>\n </tr>\n <tr>\n <td><code>401</code></td>\n <td><code>token-not-provided</code></td>\n <td>Authentication token was not provided</td>\n </tr>\n <tr>\n <td><code>404</code></td>\n <td><code>record-not-found</code></td>\n <td>Store was not found</td>\n </tr>\n <tr>\n <td><code>429</code></td>\n <td><code>rate-limit-exceeded</code></td>\n <td>You have exceeded the rate limit of ... requests per second</td>\n </tr>\n <tr>\n <td><code>405</code></td>\n <td><code>method-not-allowed</code></td>\n <td>This API endpoint can only be accessed using the following HTTP methods: OPTIONS, POST</td>\n </tr>\n</table>\n\n## Rate limiting\n<span id=\"/introduction/rate-limiting\"></span>\n\nAll API endpoints limit the rate of requests in order to prevent overloading of Apify servers by misbehaving clients.\n\nThere are two kinds of rate limits - a global rate limit and a per-resource rate limit.\n\n### Global rate limit\n<span id=\"/introduction/rate-limiting/global-rate-limit\"></span>\n\nThe global rate limit is set to _250 000 requests per minute_.\nFor [authenticated](#/introduction/authentication) requests, it is counted per user,\nand for unauthenticated requests, it is counted per IP address.\n\n### Per-resource rate limit\n<span id=\"/introduction/rate-limiting/per-resource-rate-limit\"></span>\n\nThe default per-resource rate limit is _60 requests per second per resource_, which in this context means a single Actor, a single Actor run, a single dataset, single key-value store etc.\nThe default rate limit is applied to every API endpoint except a few select ones, which have higher rate limits.\nEach API endpoint returns its rate limit in `X-RateLimit-Limit` header.\n\nThese endpoints have a rate limit of _200 requests per second per resource_:\n\n* CRUD ([get](#/reference/key-value-stores/record/get-record),\n [put](#/reference/key-value-stores/record/put-record),\n [delete](#/reference/key-value-stores/record/delete-record))\n operations on key-value store records\n\nThese endpoints have a rate limit of _400 requests per second per resource_:\n* [Run Actor](#/reference/actors/run-collection/run-actor)\n* [Run Actor task asynchronously](#/reference/actor-tasks/runs-collection/run-task-asynchronously)\n* [Run Actor task synchronously](#/reference/actor-tasks/runs-collection/run-task-synchronously)\n* [Metamorph Actor run](#/reference/actors/metamorph-run/metamorph-run)\n* [Push items](#/reference/datasets/item-collection/put-items) to dataset\n* CRUD\n ([add](#/reference/request-queues/request-collection/add-request),\n [get](#/reference/request-queues/request-collection/get-request),\n [update](#/reference/request-queues/request-collection/update-request),\n [delete](#/reference/request-queues/request-collection/delete-request))\n operations on requests in request queues\n\n### Rate limit exceeded errors\n<span id=\"/introduction/rate-limiting/rate-limit-exceeded-errors\"></span>\n\nIf the client is sending too many requests, the API endpoints respond with the HTTP status code `429 Too Many Requests`\nand the following body:\n\n```\n{\n \"error\": {\n \"type\": \"rate-limit-exceeded\",\n \"message\": \"You have exceeded the rate limit of ... requests per second\"\n }\n}\n```\n\n### Retrying rate-limited requests with exponential backoff\n<span id=\"/introduction/rate-limiting/retrying-rate-limited-requests-with-exponential-backoff\"></span>\n\nIf the client receives the rate limit error, it should wait a certain period of time and then retry the request.\nIf the error happens again, the client should double the wait period and retry the request,\nand so on. This algorithm is known as _exponential backoff_\nand it can be described using the following pseudo-code:\n\n1. Define a variable `DELAY=500`\n2. Send the HTTP request to the API endpoint\n3. If the response has status code not equal to `429` then you are done. Otherwise:\n * Wait for a period of time chosen randomly from the interval `DELAY` to `2*DELAY` milliseconds\n * Double the future wait period by setting `DELAY = 2*DELAY`\n * Continue with step 2\n\nIf all requests sent by the client implement the above steps,\nthe client will automatically use the maximum available bandwidth for its requests.\n\nNote that the Apify API clients [for JavaScript](https://docs.apify.com/api/client/js)\nand [for Python](https://docs.apify.com/api/client/python)\nuse the exponential backoff algorithm transparently, so that you do not need to worry about it.\n\n## Referring to resources\n<span id=\"/introduction/referring-to-resources\"></span>\n\nThere are three main ways to refer to a resource you're accessing via API.\n\n- the resource ID (e.g. `iKkPcIgVvwmztduf8`)\n- `username~resourcename` - when using this access method, you will need to\nuse your API token, and access will only work if you have the correct\npermissions.\n- `~resourcename` - for this, you need to use an API token, and the\n`resourcename` refers to a resource in the API token owner's account.\n",
"contact": {},
"version": ""
},
"servers": [
{
"url": "https://api.apify.com",
"variables": {}
}
],
"security": [
{
"httpBearer": []
},
{
"apiKey": []
}
],
"tags": [
{
"name": "Actors",
"x-displayName": "Actors - Introduction",
"x-legacy-doc-urls": [
"#/reference/actors",
"#tag/Actors",
"#/reference/actors/actor-collection",
"#tag/ActorsActor-collection",
"#/reference/actors/actor-object",
"#tag/ActorsActor-object"
],
"description": "The API endpoints in this section allow you to manage Apify Actors. For more details about Actors, refer to the [Actor documentation](https://docs.apify.com/platform/actors).\n\nFor API endpoints that require the `actorId` parameter to identify an Actor, you can provide either:\n- The Actor ID (e.g., `HG7ML7M8z78YcAPEB`), or\n- A tilde-separated combination of the Actor owner's username and the Actor name (e.g., `janedoe~my-actor`).\n"
},
{
"name": "Actors/Actor versions",
"x-displayName": "Actor versions - Introduction",
"x-parent-tag-name": "Actors",
"x-legacy-doc-urls": [
"#/reference/actors/version-collection",
"#tag/ActorsVersion-collection",
"#/reference/actors/version-object",
"#tag/ActorsVersion-object",
"#/reference/actors/environment-variable-collection",
"#tag/ActorsEnvironment-variable-collection",
"#/reference/actors/environment-variable-object",
"#tag/ActorsEnvironment-variable-object"
],
"x-trait": "true",
"description": "The API endpoints in this section allow you to manage your Apify Actors versions.\n\n- The version object contains the source code of a specific version of an Actor.\n- The `sourceType` property indicates where the source code is hosted, and based\non its value the Version object has the following additional property:\n\n| **Value** | **Description** |\n|---|---|\n| `\"SOURCE_FILES\"` | Source code is comprised of multiple files specified in the `sourceFiles` array. Each item of the array is an object with the following fields:<br/> - `name`: File path and name<br/> - `format`: Format of the content, can be either `\"TEXT\"` or `\"BASE64\"`<br/> - `content`: File content<br/><br/>Source files can be shown and edited in the Apify Console's Web IDE. |\n| `\"GIT_REPO\"` | Source code is cloned from a Git repository, whose URL is specified in the `gitRepoUrl` field. |\n| `\"TARBALL\"` | Source code is downloaded using a tarball or Zip file from a URL specified in the `tarballUrl` field. |\n|`\"GITHUB_GIST\"`| Source code is taken from a GitHub Gist, whose URL is specified in the `gitHubGistUrl` field. |\n\nFor more information about source code and Actor versions, check out [Source code](https://docs.apify.com/platform/actors/development/actor-definition/source-code)\nin Actors documentation.\n"
},
{
"name": "Actors/Actor builds",
"x-displayName": "Actor builds - Introduction",
"x-parent-tag-name": "Actors",
"x-legacy-doc-urls": [
"#/reference/actors/build-collection",
"#tag/ActorsBuild-collection",
"#/reference/actors/build-object",
"#tag/ActorsBuild-object",
"#tag/ActorsAbort-build"
],
"x-trait": "true",
"description": "The API endpoints in this section allow you to manage your Apify Actors builds.\n"
},
{
"name": "Actors/Actor runs",
"x-displayName": "Actor runs - Introduction",
"x-parent-tag-name": "Actors",
"x-legacy-doc-urls": [
"#/reference/actors/run-collection",
"#tag/ActorsRun-collection",
"#tag/ActorsResurrect-run",
"#tag/ActorsMetamorph-run",
"#tag/ActorsAbort-run",
"#/reference/actors/run-object",
"#tag/ActorsRun-object",
"#/reference/actors/run-actor-synchronously",
"#tag/ActorsRun-actor-synchronously",
"#/reference/actors/run-actor-synchronously-and-get-dataset-items",
"#tag/ActorsRun-Actor-synchronously-and-get-dataset-items",
"#/reference/actors/last-run-object-and-its-storages",
"#tag/ActorsLast-run-object-and-its-storages"
],
"description": "The API endpoints in this section allow you to manage your Apify Actors runs.\n\nSome API endpoints return run objects. If a run object includes usage costs in dollars, note that these values are calculated based on your effective unit pricing at the time of the query. As a result, the dollar amounts should be treated as informational only and not as exact figures.\n\nFor more information about platform usage and resource calculations, see the [Usage and Resources documentation](https://docs.apify.com/platform/actors/running/usage-and-resources#usage).\n",
"x-trait": "true"
},
{
"name": "Actors/Webhook collection",
"x-displayName": "Webhook collection - Introduction",
"x-parent-tag-name": "Actors",
"x-legacy-doc-urls": [
"#/reference/actors/webhook-collection",
"#tag/ActorsWebhook-collection"
],
"description": "The API endpoint in this section allows you to get a list of webhooks of a specific Actor.\n",
"x-trait": "true"
},
{
"name": "Actor builds",
"x-displayName": "Actor builds - Introduction",
"x-legacy-doc-urls": [
"#/reference/actor-builds",
"#tag/Actor-builds",
"#/reference/actor-builds/build-collection",
"#tag/Actor-buildsBuild-collection",
"#/reference/actor-builds/build-object",
"#tag/Actor-buildsBuild-object",
"#tag/Actor-buildsDelete-build",
"#tag/Actor-buildsAbort-build",
"#/reference/actor-builds/build-log",
"#tag/Actor-buildsBuild-log"
],
"description": "The API endpoints described in this section enable you to manage, and delete Apify Actor builds.\n\nNote that if any returned build object contains usage in dollars, your effective\nunit pricing at the time of query has been used for computation of this dollar equivalent, and hence it should be\nused only for informative purposes.\n\nYou can learn more about platform usage in the [documentation](https://docs.apify.com/platform/actors/running/usage-and-resources#usage).\n"
},
{
"name": "Actor runs",
"x-displayName": "Actor runs - Introduction",
"x-legacy-doc-urls": [
"#/reference/actor-runs",
"#tag/Actor-runs",
"#/reference/actor-runs/run-collection",
"#tag/Actor-runsRun-collection",
"#/reference/actor-runs/run-object-and-its-storages",
"#tag/Actor-runsRun-object-and-its-storages"
],
"description": "The API endpoints described in this section enable you to manage, and delete Apify Actor runs.\n\nIf any returned run object contains usage in dollars, your effective unit pricing at the time of query\nhas been used for computation of this dollar equivalent, and hence it should be used only for informative purposes.\n\nYou can learn more about platform usage in the [documentation](https://docs.apify.com/platform/actors/running/usage-and-resources#usage).\n"
},
{
"name": "Actor tasks",
"x-displayName": "Actor tasks - Introduction",
"x-legacy-doc-urls": [
"#/reference/actor-tasks",
"#tag/Actor-tasks",
"#/reference/actor-tasks/task-collection",
"#tag/Actor-tasksTask-collection",
"#/reference/actor-tasks/task-object",
"#tag/Actor-tasksTask-object",
"#/reference/actor-tasks/task-input-object",
"#tag/Actor-tasksTask-input-object",
"#/reference/actor-tasks/webhook-collection",
"#tag/Actor-tasksWebhook-collection",
"#/reference/actor-tasks/run-collection",
"#tag/Actor-tasksRun-collection",
"#/reference/actor-tasks/run-task-synchronously",
"#tag/Actor-tasksRun-task-synchronously",
"#/reference/actor-tasks/run-task-synchronously-and-get-dataset-items",
"#tag/Actor-tasksRun-task-synchronously-and-get-dataset-items",
"#/reference/actor-tasks/last-run-object-and-its-storages",
"#tag/Actor-tasksLast-run-object-and-its-storages"
],
"description": "The API endpoints described in this section enable you to create, manage, delete, and run Apify Actor tasks.\nFor more information, see the [Actor tasts documentation](https://docs.apify.com/platform/actors/running/tasks).\n\n:::note\n\nFor all the API endpoints that accept the `actorTaskId` parameter to\nspecify a task, you can pass either the task ID (e.g. `HG7ML7M8z78YcAPEB`) or a tilde-separated\nusername of the task's owner and the task's name (e.g. `janedoe~my-task`).\n\n:::\n\nSome of the API endpoints return run objects. If any such run object\ncontains usage in dollars, your effective unit pricing at the time of query\nhas been used for computation of this dollar equivalent, and hence it should be\nused only for informative purposes.\n\nYou can learn more about platform usage in the [documentation](https://docs.apify.com/platform/actors/running/usage-and-resources#usage).\n"
},
{
"name": "Storage",
"x-displayName": "",
"description": "Storage-related API endpoints for managing datasets, key-value stores, and request queues."
},
{
"name": "Storage/Datasets",
"x-displayName": "Datasets - Introduction",
"x-parent-tag-name": "Storage",
"x-legacy-doc-urls": [
"#/reference/datasets",
"#tag/Datasets",
"#/reference/datasets/dataset-collection",
"#tag/DatasetsDataset-collection",
"#/reference/datasets/dataset",
"#tag/DatasetsDataset",
"#/reference/datasets/item-collection",
"#tag/DatasetsItem-collection"
],
"description": "This section describes API endpoints to manage Datasets.\n\nDataset is a storage for structured data, where each record stored has the same attributes,\nsuch as online store products or real estate offers. You can imagine it as a table,\nwhere each object is a row and its attributes are columns. Dataset is an append-only\nstorage - you can only add new records to it but you cannot modify or remove existing\nrecords. Typically it is used to store crawling results.\n\nFor more information, see the [Datasets documentation](https://docs.apify.com/platform/storage/dataset).\n\n:::note\n\nSome of the endpoints do not require the authentication token, the calls\nare authenticated using the hard-to-guess ID of the dataset.\n\n:::\n",
"x-trait": "true"
},
{
"name": "Storage/Key-value stores",
"x-displayName": "Key-value stores - Introduction",
"x-parent-tag-name": "Storage",
"x-legacy-doc-urls": [
"#/reference/key-value-stores/key-collection",
"#tag/Key-value-storesKey-collection",
"#/reference/key-value-stores/store-collection",
"#tag/Key-value-storesStore-collection",
"#/reference/key-value-stores/store-object",
"#tag/Key-value-storesStore-object",
"#/reference/key-value-stores/record",
"#tag/Key-value-storesRecord",
"#/reference/key-value-stores",
"#tag/Key-value-stores"
],
"description": "This section describes API endpoints to manage Key-value stores.\nKey-value store is a simple storage for saving and reading data records or files.\nEach data record is represented by a unique key and associated with a MIME content type.\nKey-value stores are ideal for saving screenshots, Actor inputs and outputs, web pages,\nPDFs or to persist the state of crawlers.\n\nFor more information, see the [Key-value store documentation](https://docs.apify.com/platform/storage/key-value-store).\n\n:::note\n\nSome of the endpoints do not require the authentication token, the calls\nare authenticated using a hard-to-guess ID of the key-value store.\n\n:::\n",
"x-trait": "true"
},
{
"name": "Storage/Request queues",
"x-displayName": "Request queues - Introduction",
"x-parent-tag-name": "Storage",
"x-legacy-doc-urls": [
"#/reference/request-queues",
"#tag/Request-queues",
"#/reference/request-queues/queue-collection",
"#tag/Request-queuesQueue-collection",
"#/reference/request-queues/queue",
"#tag/Request-queuesQueue",
"#/reference/request-queues/batch-request-operations",
"#tag/Request-queuesBatch-request-operations"
],
"description": "This section describes API endpoints to create, manage, and delete request queues.\n\nRequest queue is a storage for a queue of HTTP URLs to crawl, which is typically\nused for deep crawling of websites where you\nstart with several URLs and then recursively follow links to other pages.\nThe storage supports both breadth-first and depth-first crawling orders.\n\nFor more information, see the [Request queue documentation](https://docs.apify.com/platform/storage/request-queue).\n\n:::note\n\nSome of the endpoints do not require the authentication token, the calls\nare authenticated using the hard-to-guess ID of the queue.\n\n:::\n"
},
{
"name": "Storage/Request queues/Requests",
"x-displayName": "Requests - Introduction",
"x-parent-tag-name": "Storage",
"x-legacy-doc-urls": [
"#/reference/request-queues/request-collection",
"#tag/Request-queuesRequest-collection",
"#/reference/request-queues/request",
"#tag/Request-queuesRequest"
],
"description": "This section describes API endpoints to create, manage, and delete requests within request queues.\n\nRequest queue is a storage for a queue of HTTP URLs to crawl, which is typically\nused for deep crawling of websites where you\nstart with several URLs and then recursively follow links to other pages.\nThe storage supports both breadth-first and depth-first crawling orders.\n\nFor more information, see the [Request queue documentation](https://docs.apify.com/platform/storage/request-queue).\n\n:::note\n\nSome of the endpoints do not require the authentication token, the calls\nare authenticated using the hard-to-guess ID of the queue.\n\n:::\n"
},
{
"name": "Storage/Request queues/Requests locks",
"x-displayName": "Requests locks - Introduction",
"x-parent-tag-name": "Storage",
"x-legacy-doc-urls": [
"#/reference/request-queues/request-lock",
"#tag/Request-queuesRequest-lock",
"#/reference/request-queues/queue-head",
"#tag/Request-queuesQueue-head",
"#/reference/request-queues/queue-head-with-locks",
"#tag/Request-queuesQueue-head-with-locks"
],
"description": "This section describes API endpoints to create, manage, and delete request locks within request queues.\n\nRequest queue is a storage for a queue of HTTP URLs to crawl, which is typically\nused for deep crawling of websites where you\nstart with several URLs and then recursively follow links to other pages.\nThe storage supports both breadth-first and depth-first crawling orders.\n\nFor more information, see the [Request queue documentation](https://docs.apify.com/platform/storage/request-queue).\n\n:::note\n\nSome of the endpoints do not require the authentication token, the calls\nare authenticated using the hard-to-guess ID of the queue.\n\n:::\n"
},
{
"name": "Webhooks",
"x-displayName": "",
"description": "Webhook-related API endpoints for configuring automated notifications."
},
{
"name": "Webhooks/Webhooks",
"x-displayName": "Webhooks - Introduction",
"x-parent-tag-name": "Webhooks",
"x-legacy-doc-urls": [
"#/reference/webhooks",
"#tag/Webhooks",
"#/reference/webhooks/webhook-collection",
"#tag/WebhooksWebhook-collection",
"#/reference/webhooks/webhook-object",
"#tag/WebhooksWebhook-object",
"#/reference/webhooks/webhook-test",
"#tag/WebhooksWebhook-test",
"#/reference/webhooks/dispatches-collection",
"#tag/WebhooksDispatches-collection"
],
"description": "This section describes API endpoints to manage webhooks.\n\nWebhooks provide an easy and reliable way to configure the Apify platform\nto carry out an action (e.g. a HTTP request to another service) when a certain\nsystem event occurs.\nFor example, you can use webhooks to start another Actor when an Actor run finishes\nor fails.\n\nFor more information see [Webhooks documentation](https://docs.apify.com/platform/integrations/webhooks).\n"
},
{
"name": "Webhooks/Webhook dispatches",
"x-displayName": "Webhook dispatches - Introduction",
"x-parent-tag-name": "Webhooks",
"x-legacy-doc-urls": [
"#/reference/webhook-dispatches",
"#tag/Webhook-dispatches",
"#/reference/webhook-dispatches/webhook-dispatches-collection",
"#tag/Webhook-dispatchesWebhook-dispatches-collection",
"#/reference/webhook-dispatches/webhook-dispatch-object",
"#tag/Webhook-dispatchesWebhook-dispatch-object"
],
"description": "This section describes API endpoints to get webhook dispatches."
},
{
"name": "Schedules",
"x-displayName": "Schedules - Introduction",
"x-legacy-doc-urls": [
"#/reference/schedules",
"#tag/Schedules",
"#/reference/schedules/schedules-collection",
"#tag/SchedulesSchedules-collection",
"#/reference/schedules/schedule-object",
"#tag/SchedulesSchedule-object",
"#/reference/schedules/schedule-log",
"#tag/SchedulesSchedule-log"
],
"description": "This section describes API endpoints for managing schedules.\n\nSchedules are used to automatically start your Actors at certain times. Each schedule\ncan be associated with a number of Actors and Actor tasks. It is also possible\nto override the settings of each Actor (task) similarly to when invoking the Actor\n(task) using the API.\nFor more information, see [Schedules documentation](https://docs.apify.com/platform/schedules).\n\nEach schedule is assigned actions for it to perform. Actions can be of two types\n- `RUN_ACTOR` and `RUN_ACTOR_TASK`.\n\nFor details, see the documentation of the [Get schedule](#/reference/schedules/schedule-object/get-schedule) endpoint.\n",
"x-trait": "true"
},
{
"name": "Store",
"x-displayName": "Store - Introduction",
"x-legacy-doc-urls": [
"#/reference/store",
"#tag/Store",
"#/reference/store/store-actors-collection",
"#tag/StoreStore-Actors-collection"
],
"description": "[Apify Store](https://apify.com/store) is home to thousands of public Actors available\nto the Apify community.\nThe API endpoints described in this section are used to retrieve these Actors.\n\n:::note\n\nThese endpoints do not require the authentication token.\n\n:::\n",
"x-trait": true
},
{
"name": "Logs",
"x-displayName": "Logs - Introduction",
"x-legacy-doc-urls": [
"#/reference/logs",
"#tag/Logs",
"#/reference/logs/log",
"#tag/LogsLog"
],
"description": "The API endpoints described in this section are used the download the logs\ngenerated by Actor builds and runs. Note that only the trailing 5M characters\nof the log are stored, the rest is discarded.\n\n:::note\n\nNote that the endpoints do not require the authentication token, the calls\nare authenticated using a hard-to-guess ID of the Actor build or run.\n\n:::\n",
"x-trait": true
},
{
"name": "Users",
"x-displayName": "Users - Introduction",
"x-legacy-doc-urls": [
"#/reference/users",
"#tag/Users",
"#/reference/users/public-data",
"#tag/UsersPublic-data",
"#/reference/users/private-data",
"#tag/UsersPrivate-data",
"#/reference/users/monthly-usage",
"#tag/UsersMonthly-usage",
"#/reference/users/account-and-usage-limits",
"#tag/UsersAccount-and-usage-limits"
],
"description": "The API endpoints described in this section return information about user accounts.",
"x-trait": true
}
],
"paths": {
"/v2/acts": {
"get": {
"tags": [
"Actors"
],
"summary": "Get list of Actors",
"description": "Gets the list of all Actors that the user created or used. The response is a\nlist of objects, where each object contains a basic information about a single Actor.\n\nTo only get Actors created by the user, add the `my=1` query parameter.\n\nThe endpoint supports pagination using the `limit` and `offset` parameters\nand it will not return more than 1000 records.\n\nBy default, the records are sorted by the `createdAt` field in ascending\norder, therefore you can use pagination to incrementally fetch all Actors while new\nones are still being created. To sort the records in descending order, use the `desc=1` parameter.\n\nYou can also sort by your last run by using the `sortBy=stats.lastRunStartedAt` query parameter.\nIn this case, descending order means the most recently run Actor appears first.\n",
"operationId": "acts_get",
"parameters": [
{
"name": "my",
"in": "query",
"description": "If `true` or `1` then the returned list only contains Actors owned by the user. The default value is `false`.\n",
"style": "form",
"explode": true,
"schema": {
"type": "boolean",
"example": true
}
},
{
"name": "offset",
"in": "query",
"description": "Number of records that should be skipped at the start. The default value\nis `0`.\n",
"style": "form",
"explode": true,
"schema": {
"type": "number",
"format": "double",
"example": 10
}
},
{
"name": "limit",
"in": "query",
"description": "Maximum number of records to return. The default value as well as the\nmaximum is `1000`.\n",
"style": "form",
"explode": true,
"schema": {
"type": "number",
"format": "double",
"example": 99
}
},
{
"name": "desc",
"in": "query",
"description": "If `true` or `1` then the objects are sorted by the `createdAt` field in\ndescending order. By default, they are sorted in ascending order.\n",
"style": "form",
"explode": true,
"schema": {
"type": "boolean",
"example": true
}
},
{
"name": "sortBy",
"in": "query",
"description": "Field to sort the records by. The default is `createdAt`. You can also use `stats.lastRunStartedAt` to sort\nby the most recently ran Actors.\n",
"schema": {
"type": "string",
"enum": [
"createdAt",
"stats.lastRunStartedAt"
],
"example": "createdAt"
}
}
],
"responses": {
"200": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListOfActorsResponse"
},
"example": {
"data": {
"total": 2,
"count": 2,
"offset": 0,
"limit": 1000,
"desc": false,
"items": [
{
"id": "br9CKmk457",
"createdAt": "2019-10-29T07:34:24.202Z",
"modifiedAt": "2019-10-30T07:34:24.202Z",
"name": "MyAct",
"username": "janedoe"
},
{
"id": "ksiEKo23pz",
"createdAt": "2019-11-30T07:34:24.202Z",
"modifiedAt": "2019-12-12T07:34:24.202Z",
"name": "MySecondAct",
"username": "janedoe"
}
]
}
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/actor-collection/get-list-of-actors",
"https://docs.apify.com/api/v2#/reference/actors/get-list-of-actors",
"https://docs.apify.com/api/v2#tag/ActorsActor-collection/operation/acts_get"
],
"x-js-parent": "ActorCollectionClient",
"x-js-name": "list",
"x-js-doc-url": "https://docs.apify.com/api/client/js/reference/class/ActorCollectionClient#list",
"x-py-parent": "ActorCollectionClientAsync",
"x-py-name": "list",
"x-py-doc-url": "https://docs.apify.com/api/client/python/reference/class/ActorCollectionClientAsync#list"
},
"post": {
"tags": [
"Actors"
],
"summary": "Create Actor",
"description": "Creates a new Actor with settings specified in an Actor object passed as\nJSON in the POST payload.\nThe response is the full Actor object as returned by the\n[Get Actor](#/reference/actors/actor-object/get-actor) endpoint.\n\nThe HTTP request must have the `Content-Type: application/json` HTTP header!\n\nThe Actor needs to define at least one version of the source code.\nFor more information, see [Version object](#/reference/actors/version-object).\n\nIf you want to make your Actor\n[public](https://docs.apify.com/platform/actors/publishing) using `isPublic:\ntrue`, you will need to provide the Actor's `title` and the `categories`\nunder which that Actor will be classified in Apify Store. For this, it's\nbest to use the [constants from our `apify-shared-js`\npackage](https://github.com/apify/apify-shared-js/blob/2d43ebc41ece9ad31cd6525bd523fb86939bf860/packages/consts/src/consts.ts#L452-L471).\n",
"operationId": "acts_post",
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateActorRequest"
},
"example": {
"name": "MyActor",
"description": "My favourite Actor!",
"title": "My Actor",
"isPublic": false,
"seoTitle": "My Actor",
"seoDescription": "My Actor is the best",
"versions": [
{
"versionNumber": "0.0",
"sourceType": "SOURCE_FILES",
"envVars": [
{
"name": "DOMAIN",
"value": "http://example.com",
"isSecret": false
},
{
"name": "SECRET_PASSWORD",
"value": "MyTopSecretPassword123",
"isSecret": true
}
],
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"sourceFiles": []
}
],
"categories": [],
"defaultRunOptions": {
"build": "latest",
"timeoutSecs": 3600,
"memoryMbytes": 2048,
"restartOnError": false
}
}
}
},
"required": true
},
"responses": {
"201": {
"description": "",
"headers": {
"Location": {
"content": {
"text/plain": {
"schema": {
"type": "string"
},
"example": "https://api.apify.com/v2/acts/zdc3Pyhyz3m8vjDeM"
}
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActorResponse"
},
"example": {
"data": {
"id": "zdc3Pyhyz3m8vjDeM",
"userId": "wRsJZtadYvn4mBZmm",
"name": "MyActor",
"username": "jane35",
"description": "My favourite Actor!",
"isPublic": false,
"createdAt": "2019-07-08T11:27:57.401Z",
"modifiedAt": "2019-07-08T14:01:05.546Z",
"stats": {
"totalBuilds": 9,
"totalRuns": 16,
"totalUsers": 6,
"totalUsers7Days": 2,
"totalUsers30Days": 6,
"totalUsers90Days": 6,
"totalMetamorphs": 2,
"lastRunStartedAt": "2019-07-08T14:01:05.546Z"
},
"versions": [
{
"versionNumber": "0.1",
"envVars": null,
"sourceType": "SOURCE_FILES",
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"sourceFiles": []
},
{
"versionNumber": "0.2",
"sourceType": "GIT_REPO",
"envVars": null,
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"gitRepoUrl": "https://github.com/jane35/my-actor"
},
{
"versionNumber": "0.3",
"sourceType": "TARBALL",
"envVars": null,
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"tarballUrl": "https://github.com/jane35/my-actor/archive/master.zip"
},
{
"versionNumber": "0.4",
"sourceType": "GITHUB_GIST",
"envVars": null,
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"gitHubGistUrl": "https://gist.github.com/jane35/e51feb784yu89"
}
],
"defaultRunOptions": {
"build": "latest",
"timeoutSecs": 3600,
"memoryMbytes": 2048,
"restartOnError": false
},
"exampleRunInput": {
"body": "{ \"helloWorld\": 123 }",
"contentType": "application/json; charset=utf-8"
},
"isDeprecated": false,
"deploymentKey": "ssh-rsa AAAA ...",
"title": "My Actor",
"taggedBuilds": {
"latest": {
"buildId": "z2EryhbfhgSyqj6Hn",
"buildNumber": "0.0.2",
"finishedAt": "2019-06-10T11:15:49.286Z"
}
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/actor-collection/create-actor",
"https://docs.apify.com/api/v2#/reference/actors/create-actor",
"https://docs.apify.com/api/v2#tag/ActorsActor-collection/operation/acts_post"
],
"x-js-parent": "ActorCollectionClient",
"x-js-name": "create",
"x-js-doc-url": "https://docs.apify.com/api/client/js/reference/class/ActorCollectionClient#create",
"x-py-parent": "ActorCollectionClientAsync",
"x-py-name": "create",
"x-py-doc-url": "https://docs.apify.com/api/client/python/reference/class/ActorCollectionClientAsync#create"
}
},
"/v2/acts/{actorId}": {
"get": {
"tags": [
"Actors"
],
"summary": "Get Actor",
"description": "Gets an object that contains all the details about a specific Actor.",
"operationId": "act_get",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
}
],
"responses": {
"200": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActorResponse"
},
"example": {
"data": {
"id": "zdc3Pyhyz3m8vjDeM",
"userId": "wRsJZtadYvn4mBZmm",
"name": "MyActor",
"username": "jane35",
"description": "My favourite Actor!",
"isPublic": false,
"createdAt": "2019-07-08T11:27:57.401Z",
"modifiedAt": "2019-07-08T14:01:05.546Z",
"stats": {
"totalBuilds": 9,
"totalRuns": 16,
"totalUsers": 6,
"totalUsers7Days": 2,
"totalUsers30Days": 6,
"totalUsers90Days": 6,
"totalMetamorphs": 2,
"lastRunStartedAt": "2019-07-08T14:01:05.546Z"
},
"versions": [
{
"versionNumber": "0.1",
"envVars": null,
"sourceType": "SOURCE_FILES",
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"sourceFiles": []
},
{
"versionNumber": "0.2",
"sourceType": "GIT_REPO",
"envVars": null,
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"gitRepoUrl": "https://github.com/jane35/my-actor"
},
{
"versionNumber": "0.3",
"sourceType": "TARBALL",
"envVars": null,
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"tarballUrl": "https://github.com/jane35/my-actor/archive/master.zip"
},
{
"versionNumber": "0.4",
"sourceType": "GITHUB_GIST",
"envVars": null,
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"gitHubGistUrl": "https://gist.github.com/jane35/e51feb784yu89"
}
],
"defaultRunOptions": {
"build": "latest",
"timeoutSecs": 3600,
"memoryMbytes": 2048,
"restartOnError": false
},
"exampleRunInput": {
"body": "{ \"helloWorld\": 123 }",
"contentType": "application/json; charset=utf-8"
},
"isDeprecated": false,
"deploymentKey": "ssh-rsa AAAA ...",
"title": "My Actor",
"taggedBuilds": {
"latest": {
"buildId": "z2EryhbfhgSyqj6Hn",
"buildNumber": "0.0.2",
"finishedAt": "2019-06-10T11:15:49.286Z"
}
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/actor-object/get-actor",
"https://docs.apify.com/api/v2#/reference/actors/get-actor",
"https://docs.apify.com/api/v2#tag/ActorsActor-object/operation/act_get"
],
"x-js-parent": "ActorClient",
"x-js-name": "get",
"x-js-doc-url": "https://docs.apify.com/api/client/js/reference/class/ActorClient#get",
"x-py-parent": "ActorClientAsync",
"x-py-name": "get",
"x-py-doc-url": "https://docs.apify.com/api/client/python/reference/class/ActorClientAsync#get"
},
"put": {
"tags": [
"Actors"
],
"summary": "Update Actor",
"description": "Updates settings of an Actor using values specified by an Actor object\npassed as JSON in the POST payload.\nIf the object does not define a specific property, its value will not be\nupdated.\n\nThe response is the full Actor object as returned by the\n[Get Actor](#/reference/actors/actor-object/get-actor) endpoint.\n\nThe request needs to specify the `Content-Type: application/json` HTTP header!\n\nWhen providing your API authentication token, we recommend using the\nrequest's `Authorization` header, rather than the URL. ([More\ninfo](#/introduction/authentication)).\n\nIf you want to make your Actor\n[public](https://docs.apify.com/platform/actors/publishing) using `isPublic:\ntrue`, you will need to provide the Actor's `title` and the `categories`\nunder which that Actor will be classified in Apify Store. For this, it's\nbest to use the [constants from our `apify-shared-js`\npackage](https://github.com/apify/apify-shared-js/blob/2d43ebc41ece9ad31cd6525bd523fb86939bf860/packages/consts/src/consts.ts#L452-L471).\n",
"operationId": "act_put",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
}
],
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateActorRequest"
},
"examples": {
"common": {
"summary": "Common example",
"value": {
"name": "MyActor",
"description": "My favourite Actor!",
"isPublic": false,
"actorPermissionLevel": "LIMITED_PERMISSIONS",
"seoTitle": "My Actor",
"seoDescription": "My Actor is the best",
"title": "My Actor",
"versions": [
{
"versionNumber": "0.0",
"sourceType": "SOURCE_FILES",
"envVars": [
{
"name": "DOMAIN",
"value": "http://example.com",
"isSecret": false
},
{
"name": "SECRET_PASSWORD",
"value": "MyTopSecretPassword123",
"isSecret": true
}
],
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"sourceFiles": []
}
],
"categories": [],
"defaultRunOptions": {
"build": "latest",
"timeoutSecs": 3600,
"memoryMbytes": 2048,
"restartOnError": false
}
}
},
"taggedBuildsCreateOrReassignTag": {
"summary": "Create or reassign a build tag",
"value": {
"name": "MyActor",
"isPublic": false,
"versions": [],
"taggedBuilds": {
"latest": {
"buildId": "z2EryhbfhgSyqj6Hn"
}
}
}
},
"taggedBuildsRemoveTag": {
"summary": "Remove a build tag",
"value": {
"name": "MyActor",
"isPublic": false,
"versions": [],
"taggedBuilds": {
"latest": null
}
}
},
"taggedBuildsMultipleOperations": {
"summary": "Update multiple build tags at once",
"value": {
"name": "MyActor",
"isPublic": false,
"versions": [],
"taggedBuilds": {
"latest": {
"buildId": "z2EryhbfhgSyqj6Hn"
},
"beta": null
}
}
}
}
}
},
"required": true
},
"responses": {
"200": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActorResponse"
},
"example": {
"data": {
"id": "zdc3Pyhyz3m8vjDeM",
"userId": "wRsJZtadYvn4mBZmm",
"name": "MyActor",
"username": "jane35",
"description": "My favourite Actor!",
"isPublic": false,
"actorPermissionLevel": "LIMITED_PERMISSIONS",
"createdAt": "2019-07-08T11:27:57.401Z",
"modifiedAt": "2019-07-08T14:01:05.546Z",
"stats": {
"totalBuilds": 9,
"totalRuns": 16,
"totalUsers": 6,
"totalUsers7Days": 2,
"totalUsers30Days": 6,
"totalUsers90Days": 6,
"totalMetamorphs": 2,
"lastRunStartedAt": "2019-07-08T14:01:05.546Z"
},
"versions": [
{
"versionNumber": "0.1",
"envVars": null,
"sourceType": "SOURCE_FILES",
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"sourceFiles": []
},
{
"versionNumber": "0.2",
"sourceType": "GIT_REPO",
"envVars": null,
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"gitRepoUrl": "https://github.com/jane35/my-actor"
},
{
"versionNumber": "0.3",
"sourceType": "TARBALL",
"envVars": null,
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"tarballUrl": "https://github.com/jane35/my-actor/archive/master.zip"
},
{
"versionNumber": "0.4",
"sourceType": "GITHUB_GIST",
"envVars": null,
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"gitHubGistUrl": "https://gist.github.com/jane35/e51feb784yu89"
}
],
"defaultRunOptions": {
"build": "latest",
"timeoutSecs": 3600,
"memoryMbytes": 2048,
"restartOnError": false
},
"exampleRunInput": {
"body": "{ \"helloWorld\": 123 }",
"contentType": "application/json; charset=utf-8"
},
"isDeprecated": false,
"deploymentKey": "ssh-rsa AAAA ...",
"title": "My Actor",
"taggedBuilds": {
"latest": {
"buildId": "z2EryhbfhgSyqj6Hn",
"buildNumber": "0.0.2",
"finishedAt": "2019-06-10T11:15:49.286Z"
}
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/actor-object/update-actor",
"https://docs.apify.com/api/v2#/reference/actors/update-actor",
"https://docs.apify.com/api/v2#tag/ActorsActor-object/operation/act_put"
],
"x-js-parent": "ActorClient",
"x-js-name": "update",
"x-js-doc-url": "https://docs.apify.com/api/client/js/reference/class/ActorClient#update",
"x-py-parent": "ActorClientAsync",
"x-py-name": "update",
"x-py-doc-url": "https://docs.apify.com/api/client/python/reference/class/ActorClientAsync#update"
},
"delete": {
"tags": [
"Actors"
],
"summary": "Delete Actor",
"description": "Deletes an Actor.",
"operationId": "act_delete",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
}
],
"responses": {
"204": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"type": "object",
"example": {}
},
"example": {}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/actor-object/delete-actor",
"https://docs.apify.com/api/v2#/reference/actors/delete-actor",
"https://docs.apify.com/api/v2#tag/ActorsActor-object/operation/act_delete"
],
"x-js-parent": "ActorClient",
"x-js-name": "delete",
"x-js-doc-url": "https://docs.apify.com/api/client/js/reference/class/ActorClient#delete"
}
},
"/v2/acts/{actorId}/versions": {
"get": {
"tags": [
"Actors/Actor versions"
],
"summary": "Get list of versions",
"description": "Gets the list of versions of a specific Actor. The response is a JSON object\nwith the list of [Version objects](#/reference/actors/version-object), where each\ncontains basic information about a single version.\n",
"operationId": "act_versions_get",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
}
],
"responses": {
"200": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListOfVersionsResponse"
},
"example": {
"data": {
"total": 5,
"items": [
{
"versionNumber": "0.1",
"envVars": null,
"sourceType": "SOURCE_FILES",
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"sourceFiles": []
},
{
"versionNumber": "0.2",
"sourceType": "GIT_REPO",
"envVars": null,
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"gitRepoUrl": "https://github.com/jane35/my-actor"
},
{
"versionNumber": "0.3",
"sourceType": "TARBALL",
"envVars": null,
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"tarballUrl": "https://github.com/jane35/my-actor/archive/master.zip"
},
{
"versionNumber": "0.4",
"sourceType": "GITHUB_GIST",
"envVars": null,
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"gitHubGistUrl": "https://gist.github.com/jane35/e51feb784yu89"
}
]
}
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/version-collection/get-list-of-versions",
"https://docs.apify.com/api/v2#/reference/actors/get-list-of-versions",
"https://docs.apify.com/api/v2#tag/ActorsVersion-collection/operation/act_versions_get"
],
"x-py-parent": "ActorVersionCollectionClientAsync",
"x-py-name": "list",
"x-py-doc-url": "https://docs.apify.com/api/client/python/reference/class/ActorVersionCollectionClientAsync#list"
},
"post": {
"tags": [
"Actors/Actor versions"
],
"summary": "Create version",
"description": "Creates a version of an Actor using values specified in a [Version\nobject](#/reference/actors/version-object) passed as JSON in the POST\npayload.\n\nThe request must specify `versionNumber` and `sourceType` parameters (as\nstrings) in the JSON payload and a `Content-Type: application/json` HTTP\nheader.\n\nEach `sourceType` requires its own additional properties to be passed to the\nJSON payload object. These are outlined in the [Version\nobject](#/reference/actors/version-object) table below and in more detail in\nthe [Apify\ndocumentation](https://docs.apify.com/platform/actors/development/deployment/source-types).\n\nFor example, if an Actor's source code is stored in a [GitHub\nrepository](https://docs.apify.com/platform/actors/development/deployment/source-types#git-repository),\nyou will set the `sourceType` to `GIT_REPO` and pass the repository's URL in\nthe `gitRepoUrl` property.\n\n```\n{\n \"versionNumber\": \"0.1\",\n \"sourceType\": \"GIT_REPO\",\n \"gitRepoUrl\": \"https://github.com/my-github-account/actor-repo\"\n}\n```\n\nThe response is the [Version object](#/reference/actors/version-object) as\nreturned by the [Get version](#/reference/actors/version-object/get-version) endpoint.\n",
"operationId": "act_versions_post",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
}
],
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrUpdateVersionRequest"
},
"example": {
"versionNumber": "0.1",
"sourceType": "GIT_REPO",
"gitRepoUrl": "https://github.com/my-github-account/actor-repo"
}
}
},
"required": true
},
"responses": {
"201": {
"description": "",
"headers": {
"Location": {
"content": {
"text/plain": {
"schema": {
"type": "string"
},
"example": "https://api.apify.com/v2/acts/zdc3Pyhyz3m8vjDeM/versions/0.0"
}
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VersionResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/version-collection/create-version",
"https://docs.apify.com/api/v2#/reference/actors/create-version",
"https://docs.apify.com/api/v2#tag/ActorsVersion-collection/operation/act_versions_post"
],
"x-py-parent": "ActorVersionCollectionClientAsync",
"x-py-name": "create",
"x-py-doc-url": "https://docs.apify.com/api/client/python/reference/class/ActorVersionCollectionClientAsync#create"
}
},
"/v2/acts/{actorId}/versions/{versionNumber}": {
"get": {
"tags": [
"Actors/Actor versions"
],
"summary": "Get version",
"description": "Gets a [Version object](#/reference/actors/version-object) that contains all the details about a specific version of an Actor.\n",
"operationId": "act_version_get",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
},
{
"name": "versionNumber",
"in": "path",
"description": "Actor major and minor version of the Actor.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "1.0"
}
}
],
"responses": {
"200": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VersionResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/version-object/get-version",
"https://docs.apify.com/api/v2#/reference/actors/get-version",
"https://docs.apify.com/api/v2#tag/ActorsVersion-object/operation/act_version_get"
],
"x-py-parent": "ActorVersionClientAsync",
"x-py-name": "get",
"x-py-doc-url": "https://docs.apify.com/api/client/python/reference/class/ActorVersionClientAsync#get"
},
"put": {
"tags": [
"Actors/Actor versions"
],
"summary": "Update version",
"description": "Updates Actor version using values specified by a [Version object](#/reference/actors/version-object) passed as JSON in the POST payload.\n\nIf the object does not define a specific property, its value will not be\nupdated.\n\nThe request needs to specify the `Content-Type: application/json` HTTP\nheader!\n\nWhen providing your API authentication token, we recommend using the\nrequest's `Authorization` header, rather than the URL. ([More\ninfo](#/introduction/authentication)).\n\nThe response is the [Version object](#/reference/actors/version-object) as\nreturned by the [Get version](#/reference/actors/version-object/get-version) endpoint.\n",
"operationId": "act_version_put",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
},
{
"name": "versionNumber",
"in": "path",
"description": "Actor major and minor version of the Actor.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "1.0"
}
}
],
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrUpdateVersionRequest"
},
"example": {
"versionNumber": "0.0",
"sourceType": "SOURCE_FILES",
"envVars": [
{
"name": "DOMAIN",
"value": "http://example.com",
"isSecret": false
},
{
"name": "SECRET_PASSWORD",
"value": "MyTopSecretPassword123",
"isSecret": true
}
],
"applyEnvVarsToBuild": false,
"buildTag": "latest",
"sourceFiles": []
}
}
},
"required": true
},
"responses": {
"200": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VersionResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/version-object/update-version",
"https://docs.apify.com/api/v2#/reference/actors/update-version",
"https://docs.apify.com/api/v2#tag/ActorsVersion-object/operation/act_version_put"
],
"x-py-parent": "ActorVersionClientAsync",
"x-py-name": "update",
"x-py-doc-url": "https://docs.apify.com/api/client/python/reference/class/ActorVersionClientAsync#update"
},
"delete": {
"tags": [
"Actors/Actor versions"
],
"summary": "Delete version",
"description": "Deletes a specific version of Actor's source code.\n",
"operationId": "act_version_delete",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
},
{
"name": "versionNumber",
"in": "path",
"description": "Actor major and minor version of the Actor.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "1.0"
}
}
],
"responses": {
"204": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"type": "object",
"example": {}
},
"example": {}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/version-object/delete-version",
"https://docs.apify.com/api/v2#/reference/actors/delete-version",
"https://docs.apify.com/api/v2#tag/ActorsVersion-object/operation/act_version_delete"
]
}
},
"/v2/acts/{actorId}/versions/{versionNumber}/env-vars": {
"get": {
"tags": [
"Actors/Actor versions"
],
"summary": "Get list of environment variables",
"description": "Gets the list of environment variables for a specific version of an Actor.\nThe response is a JSON object with the list of [EnvVar objects](#/reference/actors/environment-variable-object), where each contains basic information about a single environment variable.\n",
"operationId": "act_version_envVars_get",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
},
{
"name": "versionNumber",
"in": "path",
"description": "Actor version",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "0.1"
}
}
],
"responses": {
"200": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListOfEnvVarsResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/environment-variable-collection/get-list-of-environment-variables",
"https://docs.apify.com/api/v2#/reference/actors/get-list-of-environment-variables",
"https://docs.apify.com/api/v2#tag/ActorsEnvironment-variable-collection/operation/act_version_envVars_get"
],
"x-py-parent": "ActorEnvVarCollectionClientAsync",
"x-py-name": "list",
"x-py-doc-url": "https://docs.apify.com/api/client/python/reference/class/ActorEnvVarCollectionClientAsync#list"
},
"post": {
"tags": [
"Actors/Actor versions"
],
"summary": "Create environment variable",
"description": "Creates an environment variable of an Actor using values specified in a\n[EnvVar object](#/reference/actors/environment-variable-object) passed as\nJSON in the POST payload.\n\nThe request must specify `name` and `value` parameters (as strings) in the\nJSON payload and a `Content-Type: application/json` HTTP header.\n\n```\n{\n \"name\": \"ENV_VAR_NAME\",\n \"value\": \"my-env-var\"\n}\n```\n\nThe response is the [EnvVar\nobject](#/reference/actors/environment-variable-object) as returned by the [Get environment\nvariable](#/reference/actors/environment-variable-object/get-environment-variable)\nendpoint.\n",
"operationId": "act_version_envVars_post",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
},
{
"name": "versionNumber",
"in": "path",
"description": "Actor version",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "0.1"
}
}
],
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvVar"
},
"example": {
"name": "ENV_VAR_NAME",
"value": "my-env-var"
}
}
},
"required": true
},
"responses": {
"201": {
"description": "",
"headers": {
"Location": {
"content": {
"text/plain": {
"schema": {
"type": "string"
},
"example": "https://api.apify.com/v2/acts/zdc3Pyhyz3m8vjDeM/versions/1.0/env-vars/ENV_VAR_NAME"
}
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvVarResponse"
},
"example": {
"data": {
"name": "MY_ENV_VAR",
"value": "my-value",
"isSecret": false
}
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/environment-variable-collection/create-environment-variable",
"https://docs.apify.com/api/v2#/reference/actors/create-environment-variable",
"https://docs.apify.com/api/v2#tag/ActorsEnvironment-variable-collection/operation/act_version_envVars_post"
],
"x-py-parent": "ActorEnvVarCollectionClientAsync",
"x-py-name": "create",
"x-py-doc-url": "https://docs.apify.com/api/client/python/reference/class/ActorEnvVarCollectionClientAsync#create"
}
},
"/v2/acts/{actorId}/versions/{versionNumber}/env-vars/{envVarName}": {
"get": {
"tags": [
"Actors/Actor versions"
],
"summary": "Get environment variable",
"description": "Gets a [EnvVar object](#/reference/actors/environment-variable-object) that\ncontains all the details about a specific environment variable of an Actor.\n\nIf `isSecret` is set to `true`, then `value` will never be returned.\n",
"operationId": "act_version_envVar_get",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
},
{
"name": "versionNumber",
"in": "path",
"description": "Actor version",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "0.1"
}
},
{
"name": "envVarName",
"in": "path",
"description": "The name of the environment variable",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "MY_ENV_VAR"
}
}
],
"responses": {
"200": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvVarResponse"
},
"example": {
"data": {
"name": "MY_ENV_VAR",
"value": "my-value",
"isSecret": false
}
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/environment-variable-object/get-environment-variable",
"https://docs.apify.com/api/v2#/reference/actors/get-environment-variable",
"https://docs.apify.com/api/v2#tag/ActorsEnvironment-variable-object/operation/act_version_envVar_get"
],
"x-py-parent": "ActorEnvVarClientAsync",
"x-py-name": "get",
"x-py-doc-url": "https://docs.apify.com/api/client/python/reference/class/ActorEnvVarClientAsync#get"
},
"put": {
"tags": [
"Actors/Actor versions"
],
"summary": "Update environment variable",
"description": "Updates Actor environment variable using values specified by a [EnvVar\nobject](#/reference/actors/environment-variable-object)\npassed as JSON in the POST payload.\nIf the object does not define a specific property, its value will not be\nupdated.\n\nThe request needs to specify the `Content-Type: application/json` HTTP\nheader!\n\nWhen providing your API authentication token, we recommend using the\nrequest's `Authorization` header, rather than the URL. ([More\ninfo](#/introduction/authentication)).\n\nThe response is the [EnvVar object](#/reference/actors/environment-variable-object) as returned by the\n[Get environment variable](#/reference/actors/environment-variable-object/get-environment-variable)\nendpoint.\n",
"operationId": "act_version_envVar_put",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
},
{
"name": "versionNumber",
"in": "path",
"description": "Actor version",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "0.1"
}
},
{
"name": "envVarName",
"in": "path",
"description": "The name of the environment variable",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "MY_ENV_VAR"
}
}
],
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvVar"
},
"example": {
"name": "MY_ENV_VAR",
"value": "my-new-value",
"isSecret": false
}
}
},
"required": true
},
"responses": {
"200": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvVarResponse"
},
"example": {
"data": {
"name": "MY_ENV_VAR",
"value": "my-value",
"isSecret": false
}
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/environment-variable-object/update-environment-variable",
"https://docs.apify.com/api/v2#/reference/actors/update-environment-variable",
"https://docs.apify.com/api/v2#tag/ActorsEnvironment-variable-object/operation/act_version_envVar_put"
],
"x-py-parent": "ActorEnvVarClientAsync",
"x-py-name": "update",
"x-py-doc-url": "https://docs.apify.com/api/client/python/reference/class/ActorEnvVarClientAsync#update"
},
"delete": {
"tags": [
"Actors/Actor versions"
],
"summary": "Delete environment variable",
"description": "Deletes a specific environment variable.",
"operationId": "act_version_envVar_delete",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
},
{
"name": "versionNumber",
"in": "path",
"description": "Actor version",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "0.1"
}
},
{
"name": "envVarName",
"in": "path",
"description": "The name of the environment variable",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "MY_ENV_VAR"
}
}
],
"responses": {
"204": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"type": "object",
"example": {}
},
"example": {}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/environment-variable-object/delete-environment-variable",
"https://docs.apify.com/api/v2#/reference/actors/delete-environment-variable",
"https://docs.apify.com/api/v2#tag/ActorsEnvironment-variable-object/operation/act_version_envVar_delete"
]
}
},
"/v2/acts/{actorId}/webhooks": {
"get": {
"tags": [
"Actors/Webhook collection"
],
"summary": "Get list of webhooks",
"description": "Gets the list of webhooks of a specific Actor. The response is a JSON with\nthe list of objects, where each object contains basic information about a single webhook.\n\nThe endpoint supports pagination using the `limit` and `offset` parameters\nand it will not return more than 1000 records.\n\nBy default, the records are sorted by the `createdAt` field in ascending\norder, to sort the records in descending order, use the `desc=1` parameter.\n",
"operationId": "act_webhooks_get",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
},
{
"name": "offset",
"in": "query",
"description": "Number of array elements that should be skipped at the start. The\ndefault value is `0`.\n",
"style": "form",
"explode": true,
"schema": {
"type": "number",
"format": "double",
"example": 10
}
},
{
"name": "limit",
"in": "query",
"description": "Maximum number of array elements to return. The default value as well as\nthe maximum is `1000`.\n",
"style": "form",
"explode": true,
"schema": {
"type": "number",
"format": "double",
"example": 99
}
},
{
"name": "desc",
"in": "query",
"description": "If `true` or `1` then the objects are sorted by the `createdAt` field in\ndescending order. By default, they are sorted in ascending order.\n",
"style": "form",
"explode": true,
"schema": {
"type": "boolean",
"example": true
}
}
],
"responses": {
"200": {
"description": "",
"headers": {},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListOfWebhooksResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
}
},
"deprecated": false,
"x-legacy-doc-urls": [
"https://docs.apify.com/api/v2#/reference/actors/webhook-collection/get-list-of-webhooks",
"https://docs.apify.com/api/v2#/reference/actors/get-list-of-webhooks",
"https://docs.apify.com/api/v2#tag/ActorsWebhook-collection/operation/act_webhooks_get"
]
}
},
"/v2/acts/{actorId}/builds": {
"get": {
"tags": [
"Actors/Actor builds"
],
"summary": "Get list of builds",
"description": "Gets the list of builds of a specific Actor. The response is a JSON with the\nlist of objects, where each object contains basic information about a single build.\n\nThe endpoint supports pagination using the `limit` and `offset` parameters\nand it will not return more than 1000 records.\n\nBy default, the records are sorted by the `startedAt` field in ascending order,\ntherefore you can use pagination to incrementally fetch all builds while new\nones are still being started. To sort the records in descending order, use\nthe `desc=1` parameter.\n",
"operationId": "act_builds_get",
"parameters": [
{
"name": "actorId",
"in": "path",
"description": "Actor ID or a tilde-separated owner's username and Actor name.",
"required": true,
"style": "simple",
"schema": {
"type": "string",
"example": "janedoe~my-actor"
}
},
{
"name": "offset",
"in": "query",
"description": "Number of records that should be skipped at the start. The default value is `0`.\n",
"style": "form",
"explode": true,
"schema": {
"type": "number",
"format": "double",
"example": 10
}
},
{
"name": "limit",
"in": "query",
"description": "Maximum number of records to return. The default value as well as the maximum is `1000`.\n",
"style": "form",
... (truncated)
```
---
## Skill Companion Files
> Additional files collected from the skill directory layout.
### _meta.json
```json
{
"owner": "bmestanov",
"slug": "apify",
"displayName": "Apify",
"latest": {
"version": "1.0.3",
"publishedAt": 1771074519782,
"commit": "https://github.com/openclaw/skills/commit/5d1f4db93de6eedc386952e7ff6663dc9eb68b3c"
},
"history": [
{
"version": "1.0.2",
"publishedAt": 1771074442422,
"commit": "https://github.com/openclaw/skills/commit/968c9d29d155aa2471617a2ce65a8082dcc15ddb"
}
]
}
```