Skip to main content

Apify API

Download OpenAPI specification:Download

UPDATE 2024-07-09: We have rolled out this new Apify API Documentation. In case of any issues, please report here. The old API Documentation is still available here.

The Apify API (version 2) provides programmatic access to the Apify platform. The API is organized around RESTful HTTP endpoints.

All requests and responses (including errors) are encoded in JSON format with UTF-8 encoding, with a few exceptions that are explicitly described in the reference.

To access the API using Node.js, we recommend the apify-client NPM package.

To access the API using Python, we recommend the apify-client PyPI package. The clients' functions correspond to the API endpoints and have the same parameters. This simplifies development of apps that depend on the Apify platform.

Note: All requests with JSON payloads need to specify the Content-Type: application/json HTTP header! All API endpoints support the method query parameter that can override the HTTP method. For example, if you want to call a POST endpoint using a GET request, simply add the query parameter method=POST to the URL and send the GET request. This feature is especially useful if you want to call Apify API endpoints from services that can only send GET requests.

Authentication

You can find your API token on the Integrations page in the Apify Console.

To use your token in a request, either:

  • Add the token to your request's Authorization header as Bearer <token>. E.g., Authorization: Bearer xxxxxxx. More info. (Recommended).
  • Add it as the token parameter to your request URL. (Less secure).

Using your token in the request header is more secure than using it as a URL parameter because URLs are often stored in browser history and server logs. This creates a chance for someone unauthorized to access your API token.

Do not share your API token or password with untrusted parties.

For more information, see our integrations documentation.

Basic usage

To run an actor, send a POST request to the Run actor endpoint using either the actor ID code (e.g. vKg4IjxZbEYTYeW8T) or its name (e.g. janedoe~my-actor):

https://api.apify.com/v2/acts/[actor_id]/runs

If the actor is not runnable anonymously, you will receive a 401 or 403 response code. This means you need to add your secret API token to the request's Authorization header (recommended) or as a URL query parameter ?token=[your_token] (less secure).

Optionally, you can include the query parameters described in the Run actor section to customize your run.

If you're using Node.js, the best way to run an actor is using the Apify.call() method from the Apify SDK. It runs the actor using the account you are currently logged into (determined by the secret API token). The result is an actor run object and its output (if any).

A typical workflow is as follows:

  1. Run an actor or task using the Run actor or Run task API endpoints.
  2. Monitor the actor run by periodically polling its progress using the Get run API endpoint.
  3. Fetch the results from the Get items API endpoint using the defaultDatasetId, which you receive in the Run request response. Additional data may be stored in a key-value store. You can fetch them from the Get record API endpoint using the defaultKeyValueStoreId and the store's key.

Note: Instead of periodic polling, you can also run your actor or task synchronously. This will ensure that the request waits for 300 seconds (5 minutes) for the run to finish and returns its output. If the run takes longer, the request will time out and throw an error.

Response structure

Most API endpoints return a JSON object with the data property:

{
    "data": {
        ...
    }
}

However, there are a few explicitly described exceptions, such as Dataset Get items or Key-value store Get record API endpoints, which return data in other formats. In case of an error, the response has the HTTP status code in the range of 4xx or 5xx and the data property is replaced with error. For example:

{
    "error": {
        "type": "record-not-found",
        "message": "Store was not found."
    }
}

See Errors for more details.

Pagination

All API endpoints that return a list of records (e.g. Get list of actors) enforce pagination in order to limit the size of their responses.

Most of these API endpoints are paginated using the offset and limit query parameters. The only exception is Get list of keys, which is paginated using the exclusiveStartKey query parameter.

IMPORTANT: Each API endpoint that supports pagination enforces a certain maximum value for the limit parameter, in order to reduce the load on Apify servers. The maximum limit could change in future so you should never rely on a specific value and check the responses of these API endpoints.

Using offset

Most API endpoints that return a list of records enable pagination using the following query parameters:

limit Limits the response to contain a specific maximum number of items, e.g. limit=20.
offset Skips a number of items from the beginning of the list, e.g. offset=100.
desc By default, items are sorted in the order in which they were created or added to the list. This feature is useful when fetching all the items, because it ensures that items created after the client started the pagination will not be skipped. If you specify the desc=1 parameter, the items will be returned in the reverse order, i.e. from the newest to the oldest items.

The response of these API endpoints is always a JSON object with the following structure:

{
    "data": {
        "total": 2560,
        "offset": 250,
        "limit": 1000,
        "count": 1000,
        "desc": false,
        "items": [
            { 1st object },
            { 2nd object },
            ...
            { 1000th object }
        ]
    }
}

The following table describes the meaning of the response properties:

Property Description
total The total number of items available in the list.
offset The number of items that were skipped at the start. This is equal to the offset query parameter if it was provided, otherwise it is 0.
limit The maximum number of items that can be returned in the HTTP response. It equals to the limit query parameter if it was provided or the maximum limit enforced for the particular API endpoint, whichever is smaller.
count The actual number of items returned in the HTTP response.
desc true if data were requested in descending order and false otherwise.
items An array of requested items.

Using key

The records in the key-value store are not ordered based on numerical indexes, but rather by their keys in the UTF-8 binary order. Therefore the Get list of keys API endpoint only supports pagination using the following query parameters:

limit Limits the response to contain a specific maximum number items, e.g. limit=20.
exclusiveStartKey Skips all records with keys up to the given key including the given key, in the UTF-8 binary order.

The response of the API endpoint is always a JSON object with following structure:

{
    "data": {
        "limit": 1000,
        "isTruncated": true,
        "exclusiveStartKey": "my-key",
        "nextExclusiveStartKey": "some-other-key",
        "items": [
            { 1st object },
            { 2nd object },
            ...
            { 1000th object }
        ]
    }
}

The following table describes the meaning of the response properties:

Property Description
limit The maximum number of items that can be returned in the HTTP response. It equals to the limit query parameter if it was provided or the maximum limit enforced for the particular endpoint, whichever is smaller.
isTruncated true if there are more items left to be queried. Otherwise false.
exclusiveStartKey The last key that was skipped at the start. Is `null` for the first page.
nextExclusiveStartKey The value for the exclusiveStartKey parameter to query the next page of items.

Errors

The Apify API uses common HTTP status codes: 2xx range for success, 4xx range for errors caused by the caller (invalid requests) and 5xx range for server errors (these are rare). Each error response contains a JSON object defining the error property, which is an object with the type and message properties that contain the error code and a human-readable error description, respectively.

For example:

{
    "error": {
        "type": "record-not-found",
        "message": "Store was not found."
    }
}

Here is the table of the most common errors that can occur for many API endpoints:

status type message
400 invalid-request POST data must be a JSON object
400 invalid-value Invalid value provided: Comments required
400 invalid-record-key Record key contains invalid character
401 token-not-provided Authentication token was not provided
404 record-not-found Store was not found
429 rate-limit-exceeded You have exceeded the rate limit of 30 requests per second
405 method-not-allowed This API endpoint can only be accessed using the following HTTP methods: OPTIONS, POST

Rate limiting

All API endpoints limit the rate of requests in order to prevent overloading of Apify servers by misbehaving clients.

There are two kinds of rate limits - a global rate limit and a per-resource rate limit.

Global rate limit

The global rate limit is set to 250 000 requests per minute. For authenticated requests, it is counted per user, and for unauthenticated requests, it is counted per IP address.

Per-resource rate limit

The default per-resource rate limit is 30 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. The default rate limit is applied to every API endpoint except a few select ones, which have higher rate limits. Each API endpoint returns its rate limit in X-RateLimit-Limit header.

These endpoints have a rate limit of 100 requests per second per resource:

  • CRUD (get, put, delete) operations on key-value store records

These endpoints have a rate limit of 200 requests per second per resource:

Rate limit exceeded errors

If the client is sending too many requests, the API endpoints respond with the HTTP status code 429 Too Many Requests and the following body:

{
    "error": {
        "type": "rate-limit-exceeded",
        "message": "You have exceeded the rate limit of ... requests per second"
    }
}

Retrying rate-limited requests with exponential backoff

If the client receives the rate limit error, it should wait a certain period of time and then retry the request. If the error happens again, the client should double the wait period and retry the request, and so on. This algorithm is known as exponential backoff and it can be described using the following pseudo-code:

  1. Define a variable DELAY=500
  2. Send the HTTP request to the API endpoint
  3. If the response has status code not equal to 429 then you are done. Otherwise:
    • Wait for a period of time chosen randomly from the interval DELAY to 2*DELAY milliseconds
    • Double the future wait period by setting DELAY = 2*DELAY
    • Continue with step 2

If all requests sent by the client implement the above steps, the client will automatically use the maximum available bandwidth for its requests.

Note that the Apify API clients for JavaScript and for Python use the exponential backoff algorithm transparently, so that you do not need to worry about it.

Referring to resources

There are three main ways to refer to a resource you're accessing via API.

  • the resource ID (e.g. iKkPcIgVvwmztduf8)
  • username~resourcename - when using this access method, you will need to use your API token, and access will only work if you have the correct permissions.
  • ~resourcename - for this, you need to use an API token, and the resourcename refers to a resource in the API token owner's account.

Actors

The API endpoints described in this section enable you to manage, build and run Apify actors. For more information, see the Actor documentation.

Note that for all the API endpoints that accept the actorId parameter to specify an actor, you can pass either the actor ID (e.g. HG7ML7M8z78YcAPEB) or a tilde-separated username of the actor owner and the actor name (e.g. janedoe~my-actor).

Some of the API endpoints return runs objects. Note that if any such run object contains usage in dollars, your effective unit pricing at the time of query has been used for computation of this dollar equivalent, and hence it should be used only for informative purposes. You can learn more about platform usage in the documentation.

Actor collection

Get list of actors

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets the list of all Actors that the user created or used. The response is a list of objects, where each object contains a basic information about a single Actor.

To only get Actors created by the user, add the my=1 query parameter.

The endpoint supports pagination using the limit and offset parameters and it will not return more than 1000 records.

By default, the records are sorted by the createdAt field in ascending order, therefore you can use pagination to incrementally fetch all Actors while new ones are still being created. To sort the records in descending order, use the desc=1 parameter.

Authorizations:
httpBearerapiKey
query Parameters
my
boolean
Example: my=true

If true or 1 then the returned list only contains Actors owned by the user. The default value is false.

offset
number <double>
Example: offset=10

Number of records that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of records to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the createdAt field in descending order. By default, they are sorted in ascending order.

Responses

Response Schema: application/json
required
object (PaginationResponse)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (ActorShort)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .actors()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create actor

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceCreates a new Actor with settings specified in an Actor object passed as JSON in the POST payload.

The response is the full Actor object as returned by the

Get Actor endpoint.

The HTTP request must have the Content-Type: application/json HTTP header!

The Actor needs to define at least one version of the source code.

For more information, see Version object.

If you want to make your Actor public using isPublic: true, you will need to provide the Actor's title and the categories under which that Actor will be classified in Apify Store. For this, it's best to use the constants from our apify-shared-js package.

Authorizations:
httpBearerapiKey
Request Body schema: application/json
required
name
string or null
description
string or null
title
string or null
isPublic
boolean or null
seoTitle
string or null
seoDescription
string or null
restartOnError
boolean or null
Array of objects or null (Version)
categories
Array of strings or null
(any or null) or defaultRunOptions (object)

Responses

Response Headers
Location
any
Response Schema: application/json
required
object (Actor)
id
required
string
userId
required
string
name
required
string
username
required
string
description
string or null
restartOnError
boolean or null
isPublic
required
boolean
createdAt
required
string
modifiedAt
required
string
required
object (ActorStats)
required
Array of objects (Version)
required
object (defaultRunOptions)
(any or null) or exampleRunInput (object)
isDeprecated
boolean or null
deploymentKey
required
string
title
string or null
(any or null) or taggedBuilds (object)

Request samples

Content type
application/json
{
  • "name": "MyActor",
  • "description": "My favourite Actor!",
  • "title": "My Actor",
  • "isPublic": false,
  • "seoTitle": "My Actor",
  • "seoDescription": "My Actor is the best",
  • "restartOnError": false,
  • "versions": [
    ],
  • "categories": [ ],
  • "defaultRunOptions": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Actor object

Get actor

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets an object that contains all the details about a specific Actor.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

Responses

Response Schema: application/json
required
object (Actor)
id
required
string
userId
required
string
name
required
string
username
required
string
description
string or null
restartOnError
boolean or null
isPublic
required
boolean
createdAt
required
string
modifiedAt
required
string
required
object (ActorStats)
required
Array of objects (Version)
required
object (defaultRunOptions)
(any or null) or exampleRunInput (object)
isDeprecated
boolean or null
deploymentKey
required
string
title
string or null
(any or null) or taggedBuilds (object)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const actor = await apifyClient
    .actor('<ACTOR ID>')
    .get();

console.log(actor);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update actor

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceUpdates settings of an Actor using values specified by an Actor object passed as JSON in the POST payload.

If the object does not define a specific property, its value will not be updated.

The response is the full Actor object as returned by the Get Actor endpoint.

The request needs to specify the Content-Type: application/json HTTP header!

When providing your API authentication token, we recommend using the request's Authorization header, rather than the URL. (More info).

If you want to make your Actor public using isPublic: true, you will need to provide the Actor's title and the categories under which that Actor will be classified in Apify Store. For this, it's best to use the constants from our apify-shared-js package.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

Request Body schema: application/json
required
name
required
string
description
string or null
isPublic
required
boolean
seoTitle
string or null
seoDescription
string or null
title
string or null
restartOnError
boolean or null
required
Array of objects (CreateOrUpdateEnvVarRequest)
categories
Array of strings or null
(any or null) or defaultRunOptions (object)

Responses

Response Schema: application/json
required
object (Actor)
id
required
string
userId
required
string
name
required
string
username
required
string
description
string or null
restartOnError
boolean or null
isPublic
required
boolean
createdAt
required
string
modifiedAt
required
string
required
object (ActorStats)
required
Array of objects (Version)
required
object (defaultRunOptions)
(any or null) or exampleRunInput (object)
isDeprecated
boolean or null
deploymentKey
required
string
title
string or null
(any or null) or taggedBuilds (object)

Request samples

Content type
application/json
{
  • "name": "MyActor",
  • "description": "My favourite Actor!",
  • "isPublic": false,
  • "seoTitle": "My Actor",
  • "seoDescription": "My Actor is the best",
  • "title": "My Actor",
  • "restartOnError": false,
  • "versions": [
    ],
  • "categories": [ ],
  • "defaultRunOptions": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete actor

ClientsApify API JavaScript Client ReferenceDeletes an Actor.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

Responses

Response Schema: application/json
object

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient.actor('<ACTOR ID>').delete();

Response samples

Content type
application/json
{ }

Version collection

Get list of versions

ClientsApify API Python Client ReferenceGets the list of versions of a specific Actor. The response is a JSON object with the list of Version objects, where each contains basic information about a single version.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

Responses

Response Schema: application/json
required
object
total
required
number
required
Array of objects (Version)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .actor('<ACTOR ID>')
    .versions()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create version

ClientsApify API Python Client ReferenceCreates a version of an Actor using values specified in a Version object passed as JSON in the POST payload.

The request must specify versionNumber and sourceType parameters (as strings) in the JSON payload and a Content-Type: application/json HTTP header.

Each sourceType requires its own additional properties to be passed to the JSON payload object. These are outlined in the Version object table below and in more detail in the Apify documentation.

For example, if an Actor's source code is stored in a GitHub repository, you will set the sourceType to GIT_REPO and pass the repository's URL in the gitRepoUrl property.

{
    "versionNumber": "0.1",
    "sourceType": "GIT_REPO",
    "gitRepoUrl": "https://github.com/my-github-account/actor-repo"
}

The response is the Version object as returned by the Get version endpoint.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

Request Body schema: application/json
required
versionNumber
string or null
(any or null) or VersionSourceType (string)
Array of objects or null (EnvVar)
applyEnvVarsToBuild
boolean or null
buildTag
string or null
Array of SourceCodeFile (object) or SourceCodeFolder (object) (VersionSourceFiles)

Responses

Response Headers
Location
any
Response Schema: application/json
required
object (Version)
versionNumber
required
string
required
(any or null) or VersionSourceType (string)
Array of objects or null (EnvVar)
applyEnvVarsToBuild
boolean or null
buildTag
required
string
Array of SourceCodeFile (object) or SourceCodeFolder (object) (VersionSourceFiles)

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Version object

The Version object contains the source code of a specific version of an actor. The sourceType property indicates where the source code is hosted, and based on its value the Version object has the following additional property:

"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:
  • name
  • - File path and name
  • format
  • - Format of the content, can be either "TEXT" or "BASE64"
  • content
  • - File content

Source files can be shown and edited in the Apify Console's Web IDE.
"GIT_REPO" Source code is cloned from a Git repository, whose URL is specified in the gitRepoUrl field.
"TARBALL" Source code is downloaded using a tarball or Zip file from a URL specified in the tarballUrl field.
"GITHUB_GIST" Source code is taken from a GitHub Gist, whose URL is specified in the gitHubGistUrl field.

For more information about source code and actor versions, see Source code in Actors documentation.

Get version

ClientsApify API Python Client ReferenceThe Version object contains the source code of a specific version of an Actor.

The sourceType property indicates where the source code is hosted, and based on its value the Version object has the following additional property:

"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:
  • name
  • - File path and name
  • format
  • - Format of the content, can be either "TEXT" or "BASE64"
  • content
  • - File content

Source files can be shown and edited in the Apify Console's Web IDE.
"GIT_REPO" Source code is cloned from a Git repository, whose URL is specified in the gitRepoUrl field.
"TARBALL" Source code is downloaded using a tarball or Zip file from a URL specified in the tarballUrl field.
"GITHUB_GIST" Source code is taken from a GitHub Gist, whose URL is specified in the gitHubGistUrl field.

For more information about source code and Actor versions, see Source code in Actors documentation.Gets a Version object that contains all the details about a specific version of an Actor.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

versionNumber
required
string
Example: 1.0

Actor major and minor version of the Actor.

Responses

Response Schema: application/json
required
object (Version)
versionNumber
required
string
required
(any or null) or VersionSourceType (string)
Array of objects or null (EnvVar)
applyEnvVarsToBuild
boolean or null
buildTag
required
string
Array of SourceCodeFile (object) or SourceCodeFolder (object) (VersionSourceFiles)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const version = await apifyClient
    .actor('<ACTOR ID>')
    .version('0.1')
    .get();

console.log(version);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update version

ClientsApify API Python Client ReferenceThe Version object contains the source code of a specific version of an Actor.

The sourceType property indicates where the source code is hosted, and based on its value the Version object has the following additional property:

"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:
  • name
  • - File path and name
  • format
  • - Format of the content, can be either "TEXT" or "BASE64"
  • content
  • - File content

Source files can be shown and edited in the Apify Console's Web IDE.
"GIT_REPO" Source code is cloned from a Git repository, whose URL is specified in the gitRepoUrl field.
"TARBALL" Source code is downloaded using a tarball or Zip file from a URL specified in the tarballUrl field.
"GITHUB_GIST" Source code is taken from a GitHub Gist, whose URL is specified in the gitHubGistUrl field.

For more information about source code and Actor versions, see Source code in Actors documentation.Updates Actor version using values specified by a Version object passed as JSON in the POST payload.

If the object does not define a specific property, its value will not be updated.

The request needs to specify the Content-Type: application/json HTTP header!

When providing your API authentication token, we recommend using the request's Authorization header, rather than the URL. (More info).

The response is the Version object as returned by the Get version endpoint.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

versionNumber
required
string
Example: 1.0

Actor major and minor version of the Actor.

Request Body schema: application/json
required
versionNumber
string or null
(any or null) or VersionSourceType (string)
Array of objects or null (EnvVar)
applyEnvVarsToBuild
boolean or null
buildTag
string or null
Array of SourceCodeFile (object) or SourceCodeFolder (object) (VersionSourceFiles)

Responses

Response Schema: application/json
required
object (Version)
versionNumber
required
string
required
(any or null) or VersionSourceType (string)
Array of objects or null (EnvVar)
applyEnvVarsToBuild
boolean or null
buildTag
required
string
Array of SourceCodeFile (object) or SourceCodeFolder (object) (VersionSourceFiles)

Request samples

Content type
application/json
{
  • "versionNumber": "0.0",
  • "sourceType": "SOURCE_FILES",
  • "envVars": [
    ],
  • "applyEnvVarsToBuild": false,
  • "buildTag": "latest",
  • "sourceFiles": [ ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete version

The Version object contains the source code of a specific version of an Actor.

The sourceType property indicates where the source code is hosted, and based

on its value the Version object has the following additional property:

"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:
  • name
  • - File path and name
  • format
  • - Format of the content, can be either "TEXT" or "BASE64"
  • content
  • - File content

Source files can be shown and edited in the Apify Console's Web IDE.
"GIT_REPO" Source code is cloned from a Git repository, whose URL is specified in the gitRepoUrl field.
"TARBALL" Source code is downloaded using a tarball or Zip file from a URL specified in the tarballUrl field.
"GITHUB_GIST" Source code is taken from a GitHub Gist, whose URL is specified in the gitHubGistUrl field.

For more information about source code and Actor versions, see Source code in Actors documentation.Deletes a specific version of Actor's source code.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

versionNumber
required
string
Example: 1.0

Actor major and minor version of the Actor.

Responses

Response Schema: application/json
object

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient
    .actor('<ACTOR ID>')
    .version('0.1')
    .delete();

Response samples

Content type
application/json
{ }

Environment variable collection

Get list of environment variables

ClientsApify API Python Client ReferenceGets the list of environment variables for a specific version of an Actor. The response is a JSON object with the list of EnvVar objects, where each contains basic information about a single environment variable.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

versionNumber
required
string
Example: 0.1

Actor version

Responses

Response Schema: application/json
required
object
total
required
number
required
Array of objects (EnvVar)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .actor('<ACTOR ID>')
    .version('0.1')
    .envVars()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create environment variable

ClientsApify API Python Client ReferenceCreates an environment variable of an Actor using values specified in a EnvVar object passed as JSON in the POST payload.

The request must specify name and value parameters (as strings) in the JSON payload and a Content-Type: application/json HTTP header.


{
    "name": "ENV_VAR_NAME",
    "value": "my-env-var"
}

The response is the EnvVar object as returned by the Get environment variable endpoint.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

versionNumber
required
string
Example: 0.1

Actor version

Request Body schema: application/json
required
name
required
string
value
required
string
isSecret
boolean or null

Responses

Response Headers
Location
any
Response Schema: application/json
required
object (EnvVar)
name
required
string
value
required
string
isSecret
boolean or null

Request samples

Content type
application/json
{
  • "name": "ENV_VAR_NAME",
  • "value": "my-env-var"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Environment variable object

Get environment variable

ClientsApify API Python Client ReferenceGets a EnvVar object that contains all the details about a specific environment variable of an Actor.

If isSecret is set to true, then value will never be returned.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

versionNumber
required
string
Example: 0.1

Actor version

envVarName
required
string
Example: MY_ENV_VAR

The name of the environment variable

Responses

Response Schema: application/json
required
object (EnvVar)
name
required
string
value
required
string
isSecret
boolean or null

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const envVar = await apifyClient
    .actor('<ACTOR ID>')
    .version('0.1')
    .envVar('MY_ENV_VAR')
    .get();

console.log(envVar);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update environment variable

ClientsApify API Python Client ReferenceUpdates Actor environment variable using values specified by a EnvVar object

passed as JSON in the POST payload.

If the object does not define a specific property, its value will not be updated.

The request needs to specify the Content-Type: application/json HTTP header!

When providing your API authentication token, we recommend using the request's Authorization header, rather than the URL. (More info).

The response is the EnvVar object as returned by the

Get environment variable endpoint.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

versionNumber
required
string
Example: 0.1

Actor version

envVarName
required
string
Example: MY_ENV_VAR

The name of the environment variable

Request Body schema: application/json
required
name
required
string
value
required
string
isSecret
boolean or null

Responses

Response Schema: application/json
required
object (EnvVar)
name
required
string
value
required
string
isSecret
boolean or null

Request samples

Content type
application/json
{
  • "name": "MY_ENV_VAR",
  • "value": "my-new-value",
  • "isSecret": false
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete environment variable

Deletes a specific environment variable.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

versionNumber
required
string
Example: 0.1

Actor version

envVarName
required
string
Example: MY_ENV_VAR

The name of the environment variable

Responses

Response Schema: application/json
object

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient
    .actor('<ACTOR ID>')
    .version('0.1')
    .envVar('MY_ENV_VAR')
    .delete();

Response samples

Content type
application/json
{ }

Webhook collection

Get list of webhooks

Gets the list of webhooks of a specific Actor. The response is a JSON with the list of objects, where each object contains basic information about a single webhook.

The endpoint supports pagination using the limit and offset parameters and it will not return more than 1000 records.

By default, the records are sorted by the createdAt field in ascending order, to sort the records in descending order, use the desc=1 parameter.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

query Parameters
offset
number <double>
Example: offset=10

Number of array elements that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of array elements to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the createdAt field in descending order. By default, they are sorted in ascending order.

Responses

Response Schema: application/json
required
object (PaginationResponse)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
Array of objects (WebhookShort)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .actor('<ACTOR ID>')
    .webhooks()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Build collection

Get list of builds

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets the list of builds of a specific Actor. The response is a JSON with the list of objects, where each object contains basic information about a single build.

The endpoint supports pagination using the limit and offset parameters and it will not return more than 1000 records.

By default, the records are sorted by the startedAt field in ascending order, therefore you can use pagination to incrementally fetch all builds while new ones are still being started. To sort the records in descending order, use the desc=1 parameter.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

query Parameters
offset
number <double>
Example: offset=10

Number of records that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of records to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the startedAt field in descending order. By default, they are sorted in ascending order.

Responses

Response Schema: application/json
required
object
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (BuildShort)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .actor('<ACTOR ID>')
    .builds()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Build actor

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceBuilds an Actor. The response is the build object as returned by the Get build endpoint.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

query Parameters
version
required
string
Example: version=0.0

Actor version number to be built.

useCache
boolean
Example: useCache=true

If true or 1, the system will use a cache to speed up the build process. By default, cache is not used.

betaPackages
boolean
Example: betaPackages=true

If true or 1 then the Actor is built with beta versions of Apify NPM packages. By default, the build uses latest packages.

tag
string
Example: tag=latest

Tag to be applied to the build on success. By default, the tag is taken from Actor version's buildTag property.

waitForFinish
number <double>
Example: waitForFinish=60

The maximum number of seconds the server waits for the build to finish. By default it is 0, the maximum value is 60. If the build finishes in time then the returned build object will have a terminal status (e.g. SUCCEEDED), otherwise it will have a transitional status (e.g. RUNNING).

Responses

Response Headers
Location
any
Response Schema: application/json
required
object (Build)
id
required
string
actId
required
string
userId
required
string
startedAt
required
string
finishedAt
string or null
status
required
string
required
object (BuildsMeta)
(any or null) or BuildStats (object)
(any or null) or BuildOptions (object)
(any or null) or BuildUsage (object)
usageTotalUsd
number or null
(any or null) or BuildUsage (object)
inputSchema
string or null
Deprecated
readme
string or null
Deprecated
buildNumber
required
string
ActorDefinition (object) or null

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const build = await apifyClient
    .actor('<ACTOR ID>')
    .build('0.0');

console.log(build);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Build object

[DEPRECATED] API endpoints related to build of the actor were moved under new namespace actor-builds.

Get build Deprecated

By passing the optional waitForFinish parameter the API endpoint will synchronously wait for the build to finish.

This is useful to avoid periodic polling when waiting for an Actor build to finish.

This endpoint does not require the authentication token. Instead, calls are authenticated using a hard-to-guess ID of the build. However, if you access the endpoint without the token, certain attributes, such as usageUsd and usageTotalUsd, will be hidden.

Authorizations:
apiKeyActorBuildshttpBearerActorBuilds
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

buildId
required
string
Example: soSkq9ekdmfOslopH

ID of the build you want to get, found in the build's Info tab.

query Parameters
waitForFinish
number <double>
Example: waitForFinish=60

The maximum number of seconds the server waits for the build to finish. By default it is 0, the maximum value is 60. If the build finishes in time then the returned build object will have a terminal status (e.g. SUCCEEDED), otherwise it will have a transitional status (e.g. RUNNING).

Responses

Response Schema: application/json
required
object (Build)
id
required
string
actId
required
string
userId
required
string
startedAt
required
string
finishedAt
string or null
status
required
string
required
object (BuildsMeta)
(any or null) or BuildStats (object)
(any or null) or BuildOptions (object)
(any or null) or BuildUsage (object)
usageTotalUsd
number or null
(any or null) or BuildUsage (object)
inputSchema
string or null
Deprecated
readme
string or null
Deprecated
buildNumber
required
string
ActorDefinition (object) or null

Response samples

Content type
application/json
{
  • "data": {
    }
}

Abort build

[DEPRECATED] API endpoints related to build of the actor were moved under new namespace actor-builds.

Abort build Deprecated

[DEPRECATED] API endpoints related to build of the Actor were moved under new namespace actor-builds. Aborts an Actor build and returns an object that contains all the details about the build.

Only builds that are starting or running are aborted. For builds with status FINISHED, FAILED, ABORTING and TIMED-OUT this call does nothing.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

buildId
required
string
Example: 3KH8gEpp4d8uQSe8T

Build ID.

Responses

Response Schema: application/json
required
object (Build)
id
required
string
actId
required
string
userId
required
string
startedAt
required
string
finishedAt
string or null
status
required
string
required
object (BuildsMeta)
(any or null) or BuildStats (object)
(any or null) or BuildOptions (object)
(any or null) or BuildUsage (object)
usageTotalUsd
number or null
(any or null) or BuildUsage (object)
inputSchema
string or null
Deprecated
readme
string or null
Deprecated
buildNumber
required
string
ActorDefinition (object) or null

Response samples

Content type
application/json
{
  • "data": {
    }
}

Run collection

Get list of runs

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets the list of runs of a specific actor. The response is a list of objects, where each object contains basic information about a single actor run.

The endpoint supports pagination using the limit and offset parameters and it will not return more than 1000 array elements.

By default, the records are sorted by the startedAt field in ascending order, therefore you can use pagination to incrementally fetch all records while new ones are still being created. To sort the records in descending order, use desc=1 parameter. You can also filter runs by status (available statuses).

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

query Parameters
offset
number <double>
Example: offset=10

Number of array elements that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of array elements to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the startedAt field in descending order. By default, they are sorted in ascending order.

status
string
Example: status=SUCCEEDED

Return only runs with the provided status (available statuses)

Responses

Response Schema: application/json
required
object (PaginationResponse)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (RunShort)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .actor('<ACTOR ID>')
    .runs()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Run actor

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceRuns an Actor and immediately returns without waiting for the run to finish.

The POST payload including its Content-Type header is passed as INPUT to the Actor (usually application/json).

The Actor is started with the default options; you can override them using various URL query parameters.

The response is the Run object as returned by the Get run API endpoint.

If you want to wait for the run to finish and receive the actual output of the Actor as the response, please use one of the Run Actor synchronously API endpoints instead.

To fetch the Actor run results that are typically stored in the default dataset, you'll need to pass the ID received in the defaultDatasetId field received in the response JSON to the Get items API endpoint.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

query Parameters
timeout
number <double>
Example: timeout=60

Optional timeout for the run, in seconds. By default, the run uses a timeout specified in the default run configuration for the Actor.

memory
number <double>
Example: memory=256

Memory limit for the run, in megabytes. The amount of memory can be set to a power of 2 with a minimum of 128. By default, the run uses a memory limit specified in the default run configuration for the Actor.

maxItems
number <double>
Example: maxItems=1000

The maximum number of items that the Actor run should return. This is useful for pay-per-result Actors, as it allows you to limit the number of results that will be charged to your subscription. You can access the maximum number of items in your Actor by using the ACTOR_MAX_PAID_DATASET_ITEMS environment variable.

build
string
Example: build=0.1.234

Specifies the Actor build to run. It can be either a build tag or build number. By default, the run uses the build specified in the default run configuration for the Actor (typically latest).

waitForFinish
number <double>
Example: waitForFinish=60

The maximum number of seconds the server waits for the run to finish. By default, it is 0, the maximum value is 60. If the build finishes in time then the returned run object will have a terminal status (e.g. SUCCEEDED), otherwise it will have a transitional status (e.g. RUNNING).

webhooks
string
Example: webhooks=dGhpcyBpcyBqdXN0IGV4YW1wbGUK...

Specifies optional webhooks associated with the Actor run, which can be used to receive a notification e.g. when the Actor finished or failed. The value is a Base64-encoded JSON array of objects defining the webhooks. For more information, see Webhooks documentation.

Request Body schema: application/json
required
object

Responses

Response Headers
Location
any
Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Request samples

Content type
application/json
{
  • "foo": "bar"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Run actor synchronously

With input

Runs a specific Actor and returns its output.

The POST payload including its Content-Type header is passed as INPUT to the Actor (usually application/json).

The HTTP response contains Actors OUTPUT record from its default key-value store.

The Actor is started with the default options; you can override them using various URL query parameters.

If the Actor run exceeds 300 seconds, the HTTP response will have status 408 (Request Timeout).

Beware that it might be impossible to maintain an idle HTTP connection for a long period of time, due to client timeout or network conditions. Make sure your HTTP client is configured to have a long enough connection timeout.

If the connection breaks, you will not receive any information about the run and its status.

To run the Actor asynchronously, use the Run Actor API endpoint instead.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

query Parameters
outputRecordKey
string
Example: outputRecordKey=OUTPUT

Key of the record from run's default key-value store to be returned in the response. By default, it is OUTPUT.

timeout
number <double>
Example: timeout=60

Optional timeout for the run, in seconds. By default, the run uses a timeout specified in the default run configuration for the Actor.

memory
number <double>
Example: memory=256

Memory limit for the run, in megabytes. The amount of memory can be set to a power of 2 with a minimum of 128. By default, the run uses a memory limit specified in the default run configuration for the Actor.

maxItems
number <double>
Example: maxItems=1000

The maximum number of items that the Actor run should return. This is useful for pay-per-result Actors, as it allows you to limit the number of results that will be charged to your subscription. You can access the maximum number of items in your Actor by using the ACTOR_MAX_PAID_DATASET_ITEMS environment variable.

build
string
Example: build=0.1.234

Specifies the Actor build to run. It can be either a build tag or build number. By default, the run uses the build specified in the default run configuration for the Actor (typically latest).

webhooks
string
Example: webhooks=dGhpcyBpcyBqdXN0IGV4YW1wbGUK...

Specifies optional webhooks associated with the Actor run, which can be used to receive a notification

e.g. when the Actor finished or failed. The value is a Base64-encoded JSON array of objects defining the webhooks. For more information, see

Webhooks documentation.

Request Body schema: application/json
required
object

Responses

Response Schema: application/json
object
Response Schema: application/json
required
object
type
required
string
message
required
string
Response Schema: application/json
required
object
type
required
string
message
required
string

Request samples

Content type
application/json
{
  • "foo": "bar"
}

Response samples

Content type
application/json
{
  • "bar": "foo"
}

Without input

Runs a specific Actor and returns its output.

The run must finish in 300 seconds otherwise the API endpoint returns a timeout error.

The Actor is not passed any input.

Beware that it might be impossible to maintain an idle HTTP connection for a long period of time,

due to client timeout or network conditions. Make sure your HTTP client is configured to have a long enough connection timeout.

If the connection breaks, you will not receive any information about the run and its status.

To run the Actor asynchronously, use the Run Actor API endpoint instead.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

query Parameters
outputRecordKey
string
Example: outputRecordKey=OUTPUT

Key of the record from run's default key-value store to be returned in the response. By default, it is OUTPUT.

timeout
number <double>
Example: timeout=60

Optional timeout for the run, in seconds. By default, the run uses a timeout specified in the default run configuration for the Actor.

memory
number <double>
Example: memory=256

Memory limit for the run, in megabytes. The amount of memory can be set to a power of 2 with a minimum of 128. By default, the run uses a memory limit specified in the default run configuration for the Actor.

maxItems
number <double>
Example: maxItems=1000

The maximum number of items that the Actor run should return. This is useful for pay-per-result Actors, as it allows you to limit the number of results that will be charged to your subscription. You can access the maximum number of items in your Actor by using the ACTOR_MAX_PAID_DATASET_ITEMS environment variable.

build
string
Example: build=0.1.234

Specifies the Actor build to run. It can be either a build tag or build number. By default, the run uses the build specified in the default run configuration for the Actor (typically latest).

webhooks
string
Example: webhooks=dGhpcyBpcyBqdXN0IGV4YW1wbGUK...

Specifies optional webhooks associated with the Actor run, which can be used to receive a notification

e.g. when the Actor finished or failed. The value is a Base64-encoded JSON array of objects defining the webhooks. For more information, see

Webhooks documentation.

Responses

Response Schema: application/json
object
Response Schema: application/json
required
object
type
required
string
message
required
string
Response Schema: application/json
required
object
type
required
string
message
required
string

Response samples

Content type
application/json
{
  • "foo": "bar"
}

Run Actor synchronously and get dataset items

Run actor synchronously with input and get dataset items

Runs a specific Actor and returns its dataset items.

The POST payload including its Content-Type header is passed as INPUT to the Actor (usually application/json).

The HTTP response contains the Actors dataset items, while the format of items depends on specifying dataset items' format parameter.

You can send all the same options in parameters as the Get Dataset Items API endpoint.

The Actor is started with the default options; you can override them using URL query parameters.

If the Actor run exceeds 300 seconds,

the HTTP response will return the 408 status code (Request Timeout).

Beware that it might be impossible to maintain an idle HTTP connection for a long period of time,

due to client timeout or network conditions. Make sure your HTTP client is configured to have a long enough connection timeout.

If the connection breaks, you will not receive any information about the run and its status.

To run the Actor asynchronously, use the Run Actor API endpoint instead.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

query Parameters
timeout
number <double>
Example: timeout=60

Optional timeout for the run, in seconds. By default, the run uses a timeout specified in the default run configuration for the Actor.

memory
number <double>
Example: memory=256

Memory limit for the run, in megabytes. The amount of memory can be set to a power of 2 with a minimum of 128. By default, the run uses a memory limit specified in the default run configuration for the Actor.

maxItems
number <double>
Example: maxItems=1000

The maximum number of items that the Actor run should return. This is useful for pay-per-result Actors, as it allows you to limit the number of results that will be charged to your subscription. You can access the maximum number of items in your Actor by using the ACTOR_MAX_PAID_DATASET_ITEMS environment variable.

build
string
Example: build=0.1.234

Specifies the Actor build to run. It can be either a build tag or build number. By default, the run uses the build specified in the default run configuration for the Actor (typically latest).

webhooks
string
Example: webhooks=dGhpcyBpcyBqdXN0IGV4YW1wbGUK...

Specifies optional webhooks associated with the Actor run, which can be used to receive a notification

e.g. when the Actor finished or failed. The value is a Base64-encoded JSON array of objects defining the webhooks. For more information, see

Webhooks documentation.

format
string
Example: format=json

Format of the results, possible values are: json, jsonl, csv, html, xlsx, xml and rss. The default value is json.

clean
boolean
Example: clean=false

If true or 1 then the API endpoint returns only non-empty items and skips hidden fields

(i.e. fields starting with the # character).

The clean parameter is just a shortcut for skipHidden=true and skipEmpty=true parameters.

Note that since some objects might be skipped from the output, that the result might contain less items than the limit value.

offset
number <double>
Example: offset=0

Number of items that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of items to return. By default there is no limit.

fields
string
Example: fields=myValue,myOtherValue

A comma-separated list of fields which should be picked from the items,

only these fields will remain in the resulting record objects.

Note that the fields in the outputted items are sorted the same way as they are specified in the fields query parameter.

You can use this feature to effectively fix the output format.

omit
string
Example: omit=myValue,myOtherValue

A comma-separated list of fields which should be omitted from the items.

unwind
string
Example: unwind=myValue,myOtherValue

A comma-separated list of fields which should be unwound, in order which they should be processed. Each field should be either an array or an object.

If the field is an array then every element of

the array will become a separate record and merged with parent object.

If the unwound field is an object then it is merged with the parent object

If the unwound field is missing or its value is neither an array nor an object and therefore cannot be merged with a parent object then the item gets preserved as it is.

Note that the unwound items ignore the desc parameter.

flatten
string
Example: flatten=myValue

A comma-separated list of fields which should transform nested objects into flat structures.

For example, with flatten="foo" the object {"foo":{"bar": "hello"}} is turned into {"foo.bar": "hello"}.

The original object with properties is replaced with the flattened object.

desc
boolean
Example: desc=true

By default, results are returned in the same order as they were stored. To reverse the order, set this parameter to true or 1.

attachment
boolean
Example: attachment=true

If true or 1 then the response will define the Content-Disposition: attachment header, forcing a web browser to download the file rather than to display it. By default this header is not present.

delimiter
string
Example: delimiter=;

A delimiter character for CSV files, only used if format=csv. You might need to URL-encode the character (e.g. use %09 for tab or %3B for semicolon). The default delimiter is a simple comma (,).

bom
boolean
Example: bom=false

All text responses are encoded in UTF-8 encoding. By default, the format=csv files are prefixed with

the UTF-8 Byte Order Mark (BOM), while json, jsonl, xml, html and rss files are not.

If you want to override this default behavior, specify bom=1 query parameter to include the BOM or bom=0 to skip it.

xmlRoot
string
Example: xmlRoot=items

Overrides default root element name of xml output. By default the root element is items.

xmlRow
string
Example: xmlRow=item

Overrides default element name that wraps each page or page function result object in xml output. By default the element name is item.

skipHeaderRow
boolean
Example: skipHeaderRow=true

If true or 1 then header row in the csv format is skipped.

skipHidden
boolean
Example: skipHidden=false

If true or 1 then hidden fields are skipped from the output, i.e. fields starting with the # character.

skipEmpty
boolean
Example: skipEmpty=false

If true or 1 then empty items are skipped from the output.

Note that if used, the results might contain less items than the limit value.

simplified
boolean
Example: simplified=false

If true or 1 then, the endpoint applies the fields=url,pageFunctionResult,errorInfo

and unwind=pageFunctionResult query parameters. This feature is used to emulate simplified results provided by the

legacy Apify Crawler product and it's not recommended to use it in new integrations.

skipFailedPages
boolean
Example: skipFailedPages=false

If true or 1 then, the all the items with errorInfo property will be skipped from the output.

This feature is here to emulate functionality of API version 1 used for the legacy Apify Crawler product and it's not recommended to use it in new integrations.

Request Body schema: application/json
required
object

Responses

Response Headers
X-Apify-Pagination-Offset
any
X-Apify-Pagination-Limit
any
X-Apify-Pagination-Count
any
X-Apify-Pagination-Total
any
Response Schema: application/json
object
Response Schema: application/json
required
object
type
required
string
message
required
string
Response Schema: application/json
required
object
type
required
string
message
required
string

Request samples

Content type
application/json
{
  • "foo": "bar"
}

Response samples

Content type
application/json
[
  • {
    }
]

Run actor synchronously without input and get dataset items

Runs a specific actor and returns its dataset items.

The run must finish in 300 seconds otherwise the API endpoint returns a timeout error.

The actor is not passed any input.

It allows to send all possible options in parameters from Get Dataset Items API endpoint.

Beware that it might be impossible to maintain an idle HTTP connection for a long period of time,

due to client timeout or network conditions. Make sure your HTTP client is configured to have a long enough connection timeout.

If the connection breaks, you will not receive any information about the run and its status.

To run the Actor asynchronously, use the Run Actor API endpoint instead.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

query Parameters
timeout
number <double>
Example: timeout=60

Optional timeout for the run, in seconds. By default, the run uses a timeout specified in the default run configuration for the Actor.

memory
number <double>
Example: memory=256

Memory limit for the run, in megabytes. The amount of memory can be set to a power of 2 with a minimum of 128. By default, the run uses a memory limit specified in the default run configuration for the Actor.

maxItems
number <double>
Example: maxItems=1000

The maximum number of items that the Actor run should return. This is useful for pay-per-result Actors, as it allows you to limit the number of results that will be charged to your subscription. You can access the maximum number of items in your Actor by using the ACTOR_MAX_PAID_DATASET_ITEMS environment variable.

build
string
Example: build=0.1.234

Specifies the Actor build to run. It can be either a build tag or build number. By default, the run uses the build specified in the default run configuration for the Actor (typically latest).

webhooks
string
Example: webhooks=dGhpcyBpcyBqdXN0IGV4YW1wbGUK...

Specifies optional webhooks associated with the Actor run, which can be used to receive a notification

e.g. when the Actor finished or failed. The value is a Base64-encoded JSON array of objects defining the webhooks. For more information, see

Webhooks documentation.

format
string
Example: format=json

Format of the results, possible values are: json, jsonl, csv, html, xlsx, xml and rss. The default value is json.

clean
boolean
Example: clean=false

If true or 1 then the API endpoint returns only non-empty items and skips hidden fields

(i.e. fields starting with the # character).

The clean parameter is just a shortcut for skipHidden=true and skipEmpty=true parameters.

Note that since some objects might be skipped from the output, that the result might contain less items than the limit value.

offset
number <double>
Example: offset=0

Number of items that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of items to return. By default there is no limit.

fields
string
Example: fields=myValue,myOtherValue

A comma-separated list of fields which should be picked from the items,

only these fields will remain in the resulting record objects.

Note that the fields in the outputted items are sorted the same way as they are specified in the fields query parameter.

You can use this feature to effectively fix the output format.

omit
string
Example: omit=myValue,myOtherValue

A comma-separated list of fields which should be omitted from the items.

unwind
string
Example: unwind=myValue,myOtherValue

A comma-separated list of fields which should be unwound, in order which they should be processed. Each field should be either an array or an object.

If the field is an array then every element of

the array will become a separate record and merged with parent object.

If the unwound field is an object then it is merged with the parent object

If the unwound field is missing or its value is neither an array nor an object and therefore cannot be merged with a parent object then the item gets preserved as it is.

Note that the unwound items ignore the desc parameter.

flatten
string
Example: flatten=myValue

A comma-separated list of fields which should transform nested objects into flat structures.

For example, with flatten="foo" the object {"foo":{"bar": "hello"}} is turned into {"foo.bar": "hello"}.

The original object with properties is replaced with the flattened object.

desc
boolean
Example: desc=true

By default, results are returned in the same order as they were stored. To reverse the order, set this parameter to true or 1.

attachment
boolean
Example: attachment=true

If true or 1 then the response will define the Content-Disposition: attachment header, forcing a web browser to download the file rather than to display it. By default this header is not present.

delimiter
string
Example: delimiter=;

A delimiter character for CSV files, only used if format=csv. You might need to URL-encode the character (e.g. use %09 for tab or %3B for semicolon). The default delimiter is a simple comma (,).

bom
boolean
Example: bom=false

All text responses are encoded in UTF-8 encoding. By default, the format=csv files are prefixed with

the UTF-8 Byte Order Mark (BOM), while json, jsonl, xml, html and rss files are not.

If you want to override this default behavior, specify bom=1 query parameter to include the BOM or bom=0 to skip it.

xmlRoot
string
Example: xmlRoot=items

Overrides default root element name of xml output. By default the root element is items.

xmlRow
string
Example: xmlRow=item

Overrides default element name that wraps each page or page function result object in xml output. By default the element name is item.

skipHeaderRow
boolean
Example: skipHeaderRow=true

If true or 1 then header row in the csv format is skipped.

skipHidden
boolean
Example: skipHidden=false

If true or 1 then hidden fields are skipped from the output, i.e. fields starting with the # character.

skipEmpty
boolean
Example: skipEmpty=false

If true or 1 then empty items are skipped from the output.

Note that if used, the results might contain less items than the limit value.

simplified
boolean
Example: simplified=false

If true or 1 then, the endpoint applies the fields=url,pageFunctionResult,errorInfo

and unwind=pageFunctionResult query parameters. This feature is used to emulate simplified results provided by the

legacy Apify Crawler product and it's not recommended to use it in new integrations.

skipFailedPages
boolean
Example: skipFailedPages=false

If true or 1 then, the all the items with errorInfo property will be skipped from the output.

This feature is here to emulate functionality of API version 1 used for the legacy Apify Crawler product and it's not recommended to use it in new integrations.

Responses

Response Headers
X-Apify-Pagination-Offset
any
X-Apify-Pagination-Limit
any
X-Apify-Pagination-Count
any
X-Apify-Pagination-Total
any
Response Schema: application/json
object
Response Schema: application/json
required
object
type
required
string
message
required
string
Response Schema: application/json
required
object
type
required
string
message
required
string

Response samples

Content type
application/json
[
  • {
    }
]

Run object

[DEPRECATED] API endpoints related to run of the actor were moved under new namespace actor-runs.

Get run Deprecated

[DEPRECATED] API endpoints related to run of the Actor were moved under new namespace actor-runs.

Gets an object that contains all the details about a specific run of an Actor.

By passing the optional waitForFinish parameter the API endpoint will synchronously wait for the run to finish.

This is useful to avoid periodic polling when waiting for Actor run to complete.

This endpoint does not require the authentication token. Instead, calls are authenticated using a hard-to-guess ID of the run. However, if you access the endpoint without the token, certain attributes, such as usageUsd and usageTotalUsd, will be hidden.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

runId
required
string
Example: 3KH8gEpp4d8uQSe8T

Run ID.

query Parameters
waitForFinish
number <double>
Example: waitForFinish=60

The maximum number of seconds the server waits for the run to finish. By default it is 0, the maximum value is 60. If the build finishes in time then the returned run object will have a terminal status (e.g. SUCCEEDED), otherwise it will have a transitional status (e.g. RUNNING).

Responses

Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Response samples

Content type
application/json
{
  • "data": {
    }
}

Abort run

[DEPRECATED] API endpoints related to run of the actor were moved under new namespace actor-runs.

Abort run Deprecated

[DEPRECATED] API endpoints related to run of the Actor were moved under new namespace actor-runs. Aborts an Actor run and returns an object that contains all the details about the run.

Only runs that are starting or running are aborted. For runs with status FINISHED, FAILED, ABORTING and TIMED-OUT this call does nothing.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

runId
required
string
Example: 3KH8gEpp4d8uQSe8T

Run ID.

query Parameters
gracefully
boolean
Example: gracefully=true

If true passed, the Actor run will abort gracefully. It will send aborting and persistState event into run and force-stop the run after 30 seconds. It is helpful in cases where you plan to resurrect the run later.

Responses

Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Response samples

Content type
application/json
{
  • "data": {
    }
}

Metamorph run

[DEPRECATED] API endpoints related to run of the actor were moved under new namespace actor-runs.

Metamorph run Deprecated

[DEPRECATED] API endpoints related to run of the actor were moved under new namespace actor-runs.Transforms an actor run into a run of another actor with a new input.

This is useful if you want to use another actor to finish the work

of your current actor run, without the need to create a completely new run and waiting for its finish.

For the users of your actors, the metamorph operation is transparent, they will just see your actor got the work done.

There is a limit on how many times you can metamorph a single run. You can check the limit in the Actor runtime limits.

Internally, the system stops the Docker container corresponding to the actor run

and starts a new container using a different Docker image.

All the default storages are preserved and the new input is stored under the INPUT-METAMORPH-1 key in the same default key-value store.

For more information, see the Actor docs.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

runId
required
string
Example: 3KH8gEpp4d8uQSe8T

Actor run ID.

query Parameters
targetActorId
required
string
Example: targetActorId=HDSasDasz78YcAPEB

ID of a target Actor that the run should be transformed into.

build
string
Example: build=beta

Optional build of the target Actor.

It can be either a build tag or build number. By default, the run uses the build specified in the default run configuration for the target Actor (typically latest).

Responses

Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Response samples

Content type
application/json
{
  • "data": {
    }
}

Resurrect run

[DEPRECATED] API endpoints related to run of the actor were moved under new namespace actor-runs.

Resurrect run

[DEPRECATED] API endpoints related to run of the Actor were moved under new namespace actor-runs.Resurrects a finished Actor run and returns an object that contains all the details about the resurrected run.

Only finished runs, i.e. runs with status FINISHED, FAILED, ABORTED and TIMED-OUT can be resurrected.

Run status will be updated to RUNNING and its container will be restarted with the same storages

(the same behaviour as when the run gets migrated to the new server).

For more information, see the Actor docs.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

runId
required
string
Example: 3KH8gEpp4d8uQSe8T

Run ID.

query Parameters
build
string
Example: build=0.1.234

Specifies the Actor build to run. It can be either a build tag or build number. By default, the run uses the build specified in the run that is being resurrected (typically latest).

timeout
number <double>
Example: timeout=60

Optional timeout for the run, in seconds. By default, the run uses a timeout specified in the run that is being resurrected.

memory
number <double>
Example: memory=256

Memory limit for the run, in megabytes. The amount of memory can be set to a power of 2 with a minimum of 128. By default, the run uses a memory limit specified in the run that is being resurrected.

Responses

Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Response samples

Content type
application/json
{
  • "data": {
    }
}

Last run object and its storages

This is not a single endpoint, but an entire group of endpoints that lets you to retrieve and manage the last run of given actor or any of its default storages. All the endpoints require an authentication token.

The endpoints accept the same HTTP methods and query parameters as the respective storage endpoints. The base path represents the last actor run object is:

/v2/acts/{actorId}/runs/last{?token,status}

Using the status query parameter you can ensure to only get a run with a certain status (e.g. status=SUCCEEDED). The output of this endpoint and other query parameters are the same as in the Run object endpoint.

In order to access the default storages of the last actor run, i.e. log, key-value store, dataset and request queue, use the following endpoints:

  • /v2/acts/{actorId}/runs/last/log{?token,status}

  • /v2/acts/{actorId}/runs/last/key-value-store{?token,status}

  • /v2/acts/{actorId}/runs/last/dataset{?token,status}

  • /v2/acts/{actorId}/runs/last/request-queue{?token,status}

These API endpoints have the same usage as the equivalent storage endpoints. For example, /v2/acts/{actorId}/runs/last/key-value-store has the same HTTP method and parameters as the Key-value store object endpoint.

Additionally, each of the above API endpoints supports all sub-endpoints of the original one:

Key-value store

  • /v2/acts/{actorId}/runs/last/key-value-store/keys{?token,status} Key collection

  • /v2/acts/{actorId}/runs/last/key-value-store/records/{recordKey}{?token,status} Record

Dataset

  • /v2/acts/{actorId}/runs/last/dataset/items{?token,status} Item collection

Request queue

  • /v2/acts/{actorId}/runs/last/request-queue/requests{?token,status} Request collection

  • /v2/acts/{actorId}/runs/last/request-queue/requests/{requestId}{?token,status} Request collection

  • /v2/acts/{actorId}/runs/last/request-queue/head{?token,status} Queue head

For example, to download data from a dataset of the last succeeded actor run in XML format, send HTTP GET request to the following URL:

https://api.apify.com/v2/acts/{actorId}/runs/last/dataset/items?token={yourApiToken}&format=xml&status=SUCCEEDED

In order to save new items to the dataset, send HTTP POST request with JSON payload to the same URL.

Get last run

This is not a single endpoint, but an entire group of endpoints that lets you to retrieve and manage the last run of given Actor or any of its default storages. All the endpoints require an authentication token.

The endpoints accept the same HTTP methods and query parameters as the respective storage endpoints. The base path represents the last Actor run object is:

/v2/acts/{actorId}/runs/last{?token,status}

Using the status query parameter you can ensure to only get a run with a certain status (e.g. status=SUCCEEDED). The output of this endpoint and other query parameters are the same as in the Run object endpoint.

In order to access the default storages of the last Actor run, i.e. log, key-value store, dataset and request queue, use the following endpoints:

  • /v2/acts/{actorId}/runs/last/log{?token,status}
  • /v2/acts/{actorId}/runs/last/key-value-store{?token,status}
  • /v2/acts/{actorId}/runs/last/dataset{?token,status}
  • /v2/acts/{actorId}/runs/last/request-queue{?token,status}

These API endpoints have the same usage as the equivalent storage endpoints. For example, /v2/acts/{actorId}/runs/last/key-value-store has the same HTTP method and parameters as the Key-value store object endpoint.

Additionally, each of the above API endpoints supports all sub-endpoints of the original one:

Key-value store

  • /v2/acts/{actorId}/runs/last/key-value-store/keys{?token,status} Key collection
  • /v2/acts/{actorId}/runs/last/key-value-store/records/{recordKey}{?token,status} Record

Dataset

  • /v2/acts/{actorId}/runs/last/dataset/items{?token,status} Item collection

Request queue

  • /v2/acts/{actorId}/runs/last/request-queue/requests{?token,status} Request collection
  • /v2/acts/{actorId}/runs/last/request-queue/requests/{requestId}{?token,status} Request collection
  • /v2/acts/{actorId}/runs/last/request-queue/head{?token,status} Queue head

For example, to download data from a dataset of the last succeeded Actor run in XML format, send HTTP GET request to the following URL:

https://api.apify.com/v2/acts/{actorId}/runs/last/dataset/items?token={yourApiToken}&format=xml&status=SUCCEEDED

In order to save new items to the dataset, send HTTP POST request with JSON payload to the same URL.

Authorizations:
httpBearerapiKey
path Parameters
actorId
required
string
Example: janedoe~my-actor

Actor ID or a tilde-separated owner's username and Actor name.

query Parameters
status
string
Example: status=SUCCEEDED

Filter for the run status.

Responses

Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const lastRun = await apifyClient
    .actor('<ACTOR ID>')
    .lastRun();

console.log(lastRun);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Actor tasks

The API endpoints described in this section enable you to manage and run Apify actor tasks. For more information, see the Actor tasks documentation.

Note that for all the API endpoints that accept the actorTaskId parameter to specify a task, you can pass either the task ID (e.g. HG7ML7M8z78YcAPEB) or a tilde-separated username of the task's owner and the task's name (e.g. janedoe~my-task).

Some of the API endpoints return runs objects. Note that if any such run object contains usage in dollars, your effective unit pricing at the time of query has been used for computation of this dollar equivalent, and hence it should be used only for informative purposes. You can learn more about platform usage in the documentation.

Task collection

Get list of tasks

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets the complete list of tasks that a user has created or used. The response is a list of objects in which each object contains essential information about a single task.

The endpoint supports pagination using the limit and offset parameters, and it does not return more than a 1000 records.

By default, the records are sorted by the createdAt field in ascending order; therefore you can use pagination to incrementally fetch all tasks while new ones are still being created. To sort the records in descending order, use the desc=1 parameter.

Authorizations:
httpBearerapiKey
query Parameters
offset
number <double>
Example: offset=10

Number of records that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of records to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the createdAt field in descending order. By default, they are sorted in ascending order.

Responses

Response Schema: application/json
required
object (PaginationResponse)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (TaskShort)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .tasks()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create task

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceCreate a new task with settings specified by the object passed as JSON in the POST payload.

The response is the full task object as returned by the Get task endpoint.

The request needs to specify the Content-Type: application/json HTTP header!

When providing your API authentication token, we recommend using the request's Authorization header, rather than the URL. (More info).

Authorizations:
httpBearerapiKey
Request Body schema: application/json
required
actId
required
string
name
required
string
(any or null) or TaskOptions (object)
(any or null) or TaskInput (object)

Responses

Response Headers
Location
any
Response Schema: application/json
required
object (Task)
id
required
string
userId
required
string
actId
required
string
name
required
string
username
string or null
createdAt
required
string
modifiedAt
required
string
removedAt
string or null
(any or null) or TaskStats (object)
(any or null) or TaskOptions (object)
(any or null) or TaskInput (object)

Request samples

Content type
application/json
{
  • "actId": "asADASadYvn4mBZmm",
  • "name": "my-task",
  • "options": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Task object

Get task

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGet an object that contains all the details about a task.

Authorizations:
httpBearerapiKey
path Parameters
actorTaskId
required
string
Example: janedoe~my-task

Task ID or a tilde-separated owner's username and task's name.

Responses

Response Schema: application/json
required
object (Task)
id
required
string
userId
required
string
actId
required
string
name
required
string
username
string or null
createdAt
required
string
modifiedAt
required
string
removedAt
string or null
(any or null) or TaskStats (object)
(any or null) or TaskOptions (object)
(any or null) or TaskInput (object)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const task = await apifyClient
    .task('<TASK ID>')
    .get();

console.log(task);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update task

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceUpdate settings of a task using values specified by an object passed as JSON in the POST payload.

If the object does not define a specific property, its value is not updated.

The response is the full task object as returned by the Get task endpoint.

The request needs to specify the Content-Type: application/json HTTP header!

When providing your API authentication token, we recommend using the request's Authorization header, rather than the URL. (More info).

Authorizations:
httpBearerapiKey
path Parameters
actorTaskId
required
string
Example: janedoe~my-task

Task ID or a tilde-separated owner's username and task's name.

Request Body schema: application/json
required
id
required
string
userId
required
string
actId
required
string
name
required
string
username
string or null
createdAt
required
string
modifiedAt
required
string
removedAt
string or null
(any or null) or TaskStats (object)
(any or null) or TaskOptions (object)
(any or null) or Task (object)

Responses

Response Schema: application/json
required
object (Task)
id
required
string
userId
required
string
actId
required
string
name
required
string
username
string or null
createdAt
required
string
modifiedAt
required
string
removedAt
string or null
(any or null) or TaskStats (object)
(any or null) or TaskOptions (object)
(any or null) or TaskInput (object)

Request samples

Content type
application/json
{
  • "id": "ZxLNxrRaZrSjuhT9y",
  • "userId": "BPWZBd7Z9c746JAnF",
  • "actId": "asADASadYvn4mBZmm",
  • "name": "my-task",
  • "username": "janedoe",
  • "createdAt": "2018-10-26T07:23:14.855Z",
  • "modifiedAt": "2018-10-26T13:30:49.578Z",
  • "removedAt": null,
  • "stats": {
    },
  • "options": {
    },
  • "input": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete task

ClientsApify API JavaScript Client ReferenceDelete the task specified through the actorTaskId parameter.

Authorizations:
httpBearerapiKey
path Parameters
actorTaskId
required
string
Example: janedoe~my-task

Task ID or a tilde-separated owner's username and task's name.

Responses

Response Schema: application/json
object

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient.task('<TASK ID>').delete();

Response samples

Content type
application/json
{ }

Task input object

Get task input

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceReturns the input of a given task.

Authorizations:
httpBearerapiKey
path Parameters
actorTaskId
required
string
Example: janedoe~my-task

Task ID or a tilde-separated owner's username and task's name.

Responses

Response Schema: application/json
object

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const input = await apifyClient
    .task('<TASK ID>')
    .getInput();

console.log(input);

Response samples

Content type
application/json
{
  • "myField1": "some-value",
  • "myField2": "another-value",
  • "myField3": 1
}

Update task input

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceUpdates the input of a task using values specified by an object passed as JSON in the PUT payload.

If the object does not define a specific property, its value is not updated.

The response is the full task input as returned by the Get task input endpoint.

The request needs to specify the Content-Type: application/json HTTP header!

When providing your API authentication token, we recommend using the request's Authorization header, rather than the URL. (More info).

Authorizations:
httpBearerapiKey
path Parameters
actorTaskId
required
string
Example: janedoe~my-task

Task ID or a tilde-separated owner's username and task's name.

Request Body schema: application/json
required
object

Responses

Response Schema: application/json
object

Request samples

Content type
application/json
{
  • "myField2": "updated-value"
}

Response samples

Content type
application/json
{
  • "myField1": "some-value",
  • "myField2": "updated-value",
  • "myField3": 1
}

Webhook collection

Get list of webhooks

Gets the list of webhooks of a specific actor task. The response is a JSON with the list of objects, where each object contains basic information about a single webhook.

The endpoint supports pagination using the limit and offset parameters and it will not return more than 1000 records.

By default, the records are sorted by the createdAt field in ascending order, to sort the records in descending order, use the desc=1 parameter.

Authorizations:
httpBearerapiKey
path Parameters
actorTaskId
required
string
Example: janedoe~my-task

Task ID or a tilde-separated owner's username and task's name.

query Parameters
offset
number <double>
Example: offset=10

Number of array elements that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of array elements to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the createdAt field in descending order. By default, they are sorted in ascending order.

Responses

Response Schema: application/json
required
object (PaginationResponse)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (Webhook)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .task('<TASK ID>')
    .webhooks()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Run collection

Get list of task runs

Get a list of runs of a specific task. The response is a list of objects, where each object contains essential information about a single task run.

The endpoint supports pagination using the limit and offset parameters, and it does not return more than a 1000 array elements.

By default, the records are sorted by the startedAt field in ascending order; therefore you can use pagination to incrementally fetch all records while new ones are still being created. To sort the records in descending order, use the desc=1 parameter. You can also filter runs by status (available statuses).

Authorizations:
httpBearerapiKey
path Parameters
actorTaskId
required
string
Example: janedoe~my-task

Task ID or a tilde-separated owner's username and task's name.

query Parameters
offset
number <double>
Example: offset=10

Number of array elements that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of array elements to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the startedAt field in descending order. By default, they are sorted in ascending order.

status
string
Example: status=SUCCEEDED

Return only runs with the provided status (available statuses)

Responses

Response Schema: application/json
required
object (PaginationResponse)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (RunShort)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .task('<TASK ID>')
    .runs()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Run task

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceRuns an actor task and immediately returns without waiting for the run to finish.

Optionally, you can override the actor input configuration by passing a JSON object as the POST payload and setting the Content-Type: application/json HTTP header.

Note that if the object in the POST payload does not define a particular input property, the actor run uses the default value defined by the task (or actor's input schema if not defined by the task).

The response is the actor Run object as returned by the Get run endpoint.

If you want to wait for the run to finish and receive the actual output of the actor run as the response, use one of the Run task synchronously API endpoints instead.

To fetch the actor run results that are typically stored in the default dataset, you'll need to pass the ID received in the defaultDatasetId field received in the response JSON to the Get items API endpoint.

Authorizations:
httpBearerapiKey
path Parameters
actorTaskId
required
string
Example: janedoe~my-task

Task ID or a tilde-separated owner's username and task's name.

query Parameters
timeout
number <double>
Example: timeout=60

Optional timeout for the run, in seconds. By default, the run uses a timeout specified in the task settings.

memory
number <double>
Example: memory=256

Memory limit for the run, in megabytes. The amount of memory can be set to a power of 2 with a minimum of 128. By default, the run uses a memory limit specified in the task settings.

maxItems
number <double>
Example: maxItems=1000

The maximum number of items that the actor run should return. This is useful for pay-per-result actors, as it allows you to limit the number of results that will be charged to your subscription. You can access the maximum number of items in your actor by using the ACTOR_MAX_PAID_DATASET_ITEMS environment variable.

build
string
Example: build=0.1.234

Specifies the actor build to run. It can be either a build tag or build number. By default, the run uses the build specified in the task settings (typically latest).

waitForFinish
number <double>
Example: waitForFinish=60

The maximum number of seconds the server waits for the run to finish. By default, it is 0, the maximum value is 60.

If the build finishes in time then the returned run object will have a terminal status (e.g. SUCCEEDED),

otherwise it will have a transitional status (e.g. RUNNING).

webhooks
string
Example: webhooks=dGhpcyBpcyBqdXN0IGV4YW1wbGUK...

Specifies optional webhooks associated with the actor run, which can be used to receive a notification

e.g. when the actor finished or failed. The value is a Base64-encoded JSON array of objects defining the webhooks.

Note: if you already have a webhook set up for the actor or task, you do not have to add it again here.

For more information, see Webhooks documentation.

Request Body schema: application/json
required
object

Responses

Response Headers
Location
any
Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Request samples

Content type
application/json
{
  • "foo": "bar"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Run task synchronously

Run task synchronously (POST)

Runs an actor task and synchronously returns its output.

The run must finish in 300 seconds otherwise the HTTP request fails with a timeout error (this won't abort the run itself).

Optionally, you can override the actor input configuration by passing a JSON object as the POST payload and setting the Content-Type: application/json HTTP header.

Note that if the object in the POST payload does not define a particular input property, the actor run uses the default value defined by the task (or actor's input schema if not defined by the task).

Beware that it might be impossible to maintain an idle HTTP connection for an extended period, due to client timeout or network conditions. Make sure your HTTP client is configured to have a long enough connection timeout.

If the connection breaks, you will not receive any information about the run and its status.

Input fields from actor task configuration can be overloaded with values passed as the POST payload.

Just make sure to specify Content-Type header to be application/json and input to be an object.

To run the task asynchronously, use the Run task API endpoint instead.

Authorizations:
httpBearerapiKey
path Parameters
actorTaskId
required
string
Example: janedoe~my-task

Task ID or a tilde-separated owner's username and task's name.

query Parameters
timeout
number <double>
Example: timeout=60

Optional timeout for the run, in seconds. By default, the run uses a timeout specified in the task settings.

memory
number <double>
Example: memory=256

Memory limit for the run, in megabytes. The amount of memory can be set to a power of 2 with a minimum of 128. By default, the run uses a memory limit specified in the task settings.

maxItems
number <double>
Example: maxItems=1000

The maximum number of items that the task run should return. This is useful for pay-per-result tasks, as it allows you to limit the number of results that will be charged to your subscription. You can access the maximum number of items in your actor by using the ACTOR_MAX_PAID_DATASET_ITEMS environment variable.

build
string
Example: build=0.1.234

Specifies the actor build to run. It can be either a build tag or build number. By default, the run uses the build specified in the task settings (typically latest).

outputRecordKey
string
Example: outputRecordKey=OUTPUT

Key of the record from run's default key-value store to be returned in the response. By default, it is OUTPUT.

webhooks
string
Example: webhooks=dGhpcyBpcyBqdXN0IGV4YW1wbGUK...

Specifies optional webhooks associated with the actor run, which can be used to receive a notification

e.g. when the actor finished or failed. The value is a Base64-encoded JSON array of objects defining the webhooks. For more information, see

Webhooks documentation.

Request Body schema: application/json
required
object

Responses

Response Schema: application/json
object
Response Schema: application/json
required
object
type
required
string
message
required
string

Request samples

Content type
application/json
{
  • "foo": "bar"
}

Response samples

Content type
application/json
{
  • "bar": "foo"
}

Run task synchronously (GET)

Run a specific task and return its output.

The run must finish in 300 seconds otherwise the HTTP request fails with a timeout error (this won't abort the run itself).

Beware that it might be impossible to maintain an idle HTTP connection for an extended period, due to client timeout or network conditions. Make sure your HTTP client is configured to have a long enough connection timeout.

If the connection breaks, you will not receive any information about the run and its status.

To run the Task asynchronously, use the Run task asynchronously endpoint instead.

Authorizations:
httpBearerapiKey
path Parameters
actorTaskId
required
string
Example: janedoe~my-task

Task ID or a tilde-separated owner's username and task's name.

query Parameters
timeout
number <double>
Example: timeout=60

Optional timeout for the run, in seconds. By default, the run uses a timeout specified in the task settings.

memory
number <double>
Example: memory=256

Memory limit for the run, in megabytes. The amount of memory can be set to a power of 2 with a minimum of 128. By default, the run uses a memory limit specified in the task settings.

maxItems
number <double>
Example: maxItems=1000

The maximum number of items that the task run should return. This is useful for pay-per-result tasks, as it allows you to limit the number of results that will be charged to your subscription. You can access the maximum number of items in your actor by using the ACTOR_MAX_PAID_DATASET_ITEMS environment variable.

build
string
Example: build=0.1.234

Specifies the actor build to run. It can be either a build tag or build number. By default, the run uses the build specified in the task settings (typically latest).

outputRecordKey
string
Example: outputRecordKey=OUTPUT

Key of the record from run's default key-value store to be returned in the response. By default, it is OUTPUT.

webhooks
string
Example: webhooks=dGhpcyBpcyBqdXN0IGV4YW1wbGUK...

Specifies optional webhooks associated with the actor run, which can be used to receive a notification

e.g. when the actor finished or failed. The value is a Base64-encoded JSON array of objects defining the webhooks. For more information, see

Webhooks documentation.

Responses

Response Schema: application/json
object
Response Schema: application/json
required
object
type
required
string
message
required
string
Response Schema: application/json
required
object
type
required
string
message
required
string

Response samples

Content type
application/json
{
  • "bar": "foo"
}

Run task synchronously and get dataset items

Run task synchronously and get dataset items (POST)

Runs an actor task and synchronously returns its dataset items.

The run must finish in 300 seconds otherwise the HTTP request fails with a timeout error (this won't abort the run itself).

Optionally, you can override the actor input configuration by passing a JSON object as the POST payload and setting the Content-Type: application/json HTTP header.

Note that if the object in the POST payload does not define a particular input property, the actor run uses the default value defined by the task (or the actor's input schema if not defined by the task).

You can send all the same options in parameters as the Get Dataset Items API endpoint.

Beware that it might be impossible to maintain an idle HTTP connection for an extended period, due to client timeout or network conditions. Make sure your HTTP client is configured to have a long enough connection timeout.

If the connection breaks, you will not receive any information about the run and its status.

Input fields from actor task configuration can be overloaded with values passed as the POST payload.

Just make sure to specify the Content-Type header as application/json and that the input is an object.

To run the task asynchronously, use the Run task API endpoint instead.

Authorizations:
httpBearerapiKey
path Parameters
actorTaskId
required
string
Example: janedoe~my-task

Task ID or a tilde-separated owner's username and task's name.

query Parameters
timeout
number <double>
Example: timeout=60

Optional timeout for the run, in seconds. By default, the run uses a timeout specified in the task settings.

memory
number <double>
Example: memory=256

Memory limit for the run, in megabytes. The amount of memory can be set to a power of 2 with a minimum of 128. By default, the run uses a memory limit specified in the task settings.

maxItems
number <double>
Example: maxItems=1000

The maximum number of items that the task run should return. This is useful for pay-per-result tasks, as it allows you to limit the number of results that will be charged to your subscription. You can access the maximum number of items in your actor by using the ACTOR_MAX_PAID_DATASET_ITEMS environment variable.

build
string
Example: build=0.1.234

Specifies the actor build to run. It can be either a build tag or build number. By default, the run uses the build specified in the task settings (typically latest).

webhooks
string
Example: webhooks=dGhpcyBpcyBqdXN0IGV4YW1wbGUK...

Specifies optional webhooks associated with the actor run, which can be used to receive a notification

e.g. when the actor finished or failed. The value is a Base64-encoded JSON array of objects defining the webhooks. For more information, see

Webhooks documentation.

format
string
Example: format=json

Format of the results, possible values are: json, jsonl, csv, html, xlsx, xml and rss. The default value is json.

clean
boolean
Example: clean=false

If true or 1 then the API endpoint returns only non-empty items and skips hidden fields

(i.e. fields starting with the # character).

The clean parameter is just a shortcut for skipHidden=true and skipEmpty=true parameters.

Note that since some objects might be skipped from the output, that the result might contain less items than the limit value.

offset
number <double>
Example: offset=0

Number of items that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of items to return. By default there is no limit.

fields
string
Example: fields=myValue,myOtherValue

A comma-separated list of fields which should be picked from the items,

only these fields will remain in the resulting record objects.

Note that the fields in the outputted items are sorted the same way as they are specified in the fields query parameter.

You can use this feature to effectively fix the output format.

omit
string
Example: omit=myValue,myOtherValue

A comma-separated list of fields which should be omitted from the items.

unwind
string
Example: unwind=myValue,myOtherValue

A comma-separated list of fields which should be unwound, in order which they should be processed. Each field should be either an array or an object.

If the field is an array then every element of

the array will become a separate record and merged with parent object.

If the unwound field is an object then it is merged with the parent object

If the unwound field is missing or its value is neither an array nor an object and therefore cannot be merged with a parent object then the item gets preserved as it is.

Note that the unwound items ignore the desc parameter.

flatten
string
Example: flatten=myValue

A comma-separated list of fields which should transform nested objects into flat structures.

For example, with flatten="foo" the object {"foo":{"bar": "hello"}} is turned into {"foo.bar": "hello"}.

The original object with properties is replaced with the flattened object.

desc
boolean
Example: desc=true

By default, results are returned in the same order as they were stored. To reverse the order, set this parameter to true or 1.

attachment
boolean
Example: attachment=true

If true or 1 then the response will define the Content-Disposition: attachment header, forcing a web browser to download the file rather than to display it. By default this header is not present.

delimiter
string
Example: delimiter=;

A delimiter character for CSV files, only used if format=csv. You might need to URL-encode the character (e.g. use %09 for tab or %3B for semicolon). The default delimiter is a simple comma (,).

bom
boolean
Example: bom=false

All text responses are encoded in UTF-8 encoding. By default, the format=csv files are prefixed with

the UTF-8 Byte Order Mark (BOM), while json, jsonl, xml, html and rss files are not.

If you want to override this default behavior, specify bom=1 query parameter to include the BOM or bom=0 to skip it.

xmlRoot
string
Example: xmlRoot=items

Overrides default root element name of xml output. By default the root element is items.

xmlRow
string
Example: xmlRow=item

Overrides default element name that wraps each page or page function result object in xml output. By default the element name is item.

skipHeaderRow
boolean
Example: skipHeaderRow=true

If true or 1 then header row in the csv format is skipped.

skipHidden
boolean
Example: skipHidden=false

If true or 1 then hidden fields are skipped from the output, i.e. fields starting with the # character.

skipEmpty
boolean
Example: skipEmpty=false

If true or 1 then empty items are skipped from the output.

Note that if used, the results might contain less items than the limit value.

simplified
boolean
Example: simplified=false

If true or 1 then, the endpoint applies the fields=url,pageFunctionResult,errorInfo

and unwind=pageFunctionResult query parameters. This feature is used to emulate simplified results provided by the

legacy Apify Crawler product and it's not recommended to use it in new integrations.

skipFailedPages
boolean
Example: skipFailedPages=false

If true or 1 then, the all the items with errorInfo property will be skipped from the output.

This feature is here to emulate functionality of API version 1 used for the legacy Apify Crawler product and it's not recommended to use it in new integrations.

Request Body schema: application/json
required
object

Responses

Response Headers
X-Apify-Pagination-Offset
any
X-Apify-Pagination-Limit
any
X-Apify-Pagination-Count
any
X-Apify-Pagination-Total
any
Response Schema: application/json
object
Response Schema: application/json
required
object
type
required
string
message
required
string

Request samples

Content type
application/json
{
  • "foo": "bar"
}

Response samples

Content type
application/json
{ }

Run task synchronously and get dataset items (GET)

Run a specific task and return its dataset items.

The run must finish in 300 seconds otherwise the HTTP request fails with a timeout error (this won't abort the run itself).

You can send all the same options in parameters as the Get Dataset Items API endpoint.

Beware that it might be impossible to maintain an idle HTTP connection for an extended period, due to client timeout or network conditions. Make sure your HTTP client is configured to have a long enough connection timeout.

If the connection breaks, you will not receive any information about the run and its status.

To run the Task asynchronously, use the Run task asynchronously endpoint instead.

Authorizations:
httpBearerapiKey
path Parameters
actorTaskId
required
string
Example: janedoe~my-task

Task ID or a tilde-separated owner's username and task's name.

query Parameters
timeout
number <double>
Example: timeout=60

Optional timeout for the run, in seconds. By default, the run uses a timeout specified in the task settings.

memory
number <double>
Example: memory=256

Memory limit for the run, in megabytes. The amount of memory can be set to a power of 2 with a minimum of 128. By default, the run uses a memory limit specified in the task settings.

maxItems
number <double>
Example: maxItems=1000

The maximum number of items that the task run should return. This is useful for pay-per-result tasks, as it allows you to limit the number of results that will be charged to your subscription. You can access the maximum number of items in your actor by using the ACTOR_MAX_PAID_DATASET_ITEMS environment variable.

build
string
Example: build=0.1.234

Specifies the actor build to run. It can be either a build tag or build number. By default, the run uses the build specified in the task settings (typically latest).

webhooks
string
Example: webhooks=dGhpcyBpcyBqdXN0IGV4YW1wbGUK...

Specifies optional webhooks associated with the actor run, which can be used to receive a notification

e.g. when the actor finished or failed. The value is a Base64-encoded JSON array of objects defining the webhooks. For more information, see

Webhooks documentation.

format
string
Example: format=json

Format of the results, possible values are: json, jsonl, csv, html, xlsx, xml and rss. The default value is json.

clean
boolean
Example: clean=false

If true or 1 then the API endpoint returns only non-empty items and skips hidden fields

(i.e. fields starting with the # character).

The clean parameter is just a shortcut for skipHidden=true and skipEmpty=true parameters.

Note that since some objects might be skipped from the output, that the result might contain less items than the limit value.

offset
number <double>
Example: offset=0

Number of items that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of items to return. By default there is no limit.

fields
string
Example: fields=myValue,myOtherValue

A comma-separated list of fields which should be picked from the items,

only these fields will remain in the resulting record objects.

Note that the fields in the outputted items are sorted the same way as they are specified in the fields query parameter.

You can use this feature to effectively fix the output format.

omit
string
Example: omit=myValue,myOtherValue

A comma-separated list of fields which should be omitted from the items.

unwind
string
Example: unwind=myValue,myOtherValue

A comma-separated list of fields which should be unwound, in order which they should be processed. Each field should be either an array or an object.

If the field is an array then every element of

the array will become a separate record and merged with parent object.

If the unwound field is an object then it is merged with the parent object

If the unwound field is missing or its value is neither an array nor an object and therefore cannot be merged with a parent object then the item gets preserved as it is.

Note that the unwound items ignore the desc parameter.

flatten
string
Example: flatten=myValue

A comma-separated list of fields which should transform nested objects into flat structures.

For example, with flatten="foo" the object {"foo":{"bar": "hello"}} is turned into {"foo.bar": "hello"}.

The original object with properties is replaced with the flattened object.

desc
boolean
Example: desc=true

By default, results are returned in the same order as they were stored. To reverse the order, set this parameter to true or 1.

attachment
boolean
Example: attachment=true

If true or 1 then the response will define the Content-Disposition: attachment header, forcing a web browser to download the file rather than to display it. By default this header is not present.

delimiter
string
Example: delimiter=;

A delimiter character for CSV files, only used if format=csv. You might need to URL-encode the character (e.g. use %09 for tab or %3B for semicolon). The default delimiter is a simple comma (,).

bom
boolean
Example: bom=false

All text responses are encoded in UTF-8 encoding. By default, the format=csv files are prefixed with

the UTF-8 Byte Order Mark (BOM), while json, jsonl, xml, html and rss files are not.

If you want to override this default behavior, specify bom=1 query parameter to include the BOM or bom=0 to skip it.

xmlRoot
string
Example: xmlRoot=items

Overrides default root element name of xml output. By default the root element is items.

xmlRow
string
Example: xmlRow=item

Overrides default element name that wraps each page or page function result object in xml output. By default the element name is item.

skipHeaderRow
boolean
Example: skipHeaderRow=true

If true or 1 then header row in the csv format is skipped.

skipHidden
boolean
Example: skipHidden=false

If true or 1 then hidden fields are skipped from the output, i.e. fields starting with the # character.

skipEmpty
boolean
Example: skipEmpty=false

If true or 1 then empty items are skipped from the output.

Note that if used, the results might contain less items than the limit value.

simplified
boolean
Example: simplified=false

If true or 1 then, the endpoint applies the fields=url,pageFunctionResult,errorInfo

and unwind=pageFunctionResult query parameters. This feature is used to emulate simplified results provided by the

legacy Apify Crawler product and it's not recommended to use it in new integrations.

skipFailedPages
boolean
Example: skipFailedPages=false

If true or 1 then, the all the items with errorInfo property will be skipped from the output.

This feature is here to emulate functionality of API version 1 used for the legacy Apify Crawler product and it's not recommended to use it in new integrations.

Responses

Response Headers
X-Apify-Pagination-Offset
any
X-Apify-Pagination-Limit
any
X-Apify-Pagination-Count
any
X-Apify-Pagination-Total
any
Response Schema: application/json
object
Response Schema: application/json
required
object
type
required
string
message
required
string
Response Schema: application/json
required
object
type
required
string
message
required
string

Response samples

Content type
application/json
{ }

Last run object and its storages

This is not a single endpoint, but an entire group of endpoints that lets you to retrieve and manage the last run of given actor task or any of its default storages. All the endpoints require an authentication token.

The endpoints accept the same HTTP methods and query parameters as the respective storage endpoints. The base path represents the last actor task run object is:

/v2/actor-tasks/{actorTaskId}/runs/last{?token,status}

Using the status query parameter you can ensure to only get a run with a certain status (e.g. status=SUCCEEDED). The output of this endpoint and other query parameters are the same as in the Run object endpoint.

In order to access the default storages of the last actor task run, i.e. log, key-value store, dataset and request queue, use the following endpoints:

  • /v2/actor-tasks/{actorTaskId}/runs/last/log{?token,status}

  • /v2/actor-tasks/{actorTaskId}/runs/last/key-value-store{?token,status}

  • /v2/actor-tasks/{actorTaskId}/runs/last/dataset{?token,status}

  • /v2/actor-tasks/{actorTaskId}/runs/last/request-queue{?token,status}

These API endpoints have the same usage as the equivalent storage endpoints. For example, /v2/actor-tasks/{actorTaskId}/runs/last/key-value-store has the same HTTP method and parameters as the Key-value store object endpoint.

Additionally, each of the above API endpoints supports all sub-endpoints of the original one:

Key-value store

  • /v2/actor-tasks/{actorTaskId}/runs/last/key-value-store/keys{?token,status} Key collection

  • /v2/actor-tasks/{actorTaskId}/runs/last/key-value-store/records/{recordKey}{?token,status} Record

Dataset

  • /v2/actor-tasks/{actorTaskId}/runs/last/dataset/items{?token,status} Item collection

Request queue

  • /v2/actor-tasks/{actorTaskId}/runs/last/request-queue/requests{?token,status} Request collection

  • /v2/actor-tasks/{actorTaskId}/runs/last/request-queue/requests/{requestId}{?token,status} Request collection

  • /v2/actor-tasks/{actorTaskId}/runs/last/request-queue/head{?token,status} Queue head

For example, to download data from a dataset of the last succeeded actor task run in XML format, send HTTP GET request to the following URL:

https://api.apify.com/v2/actor-tasks/{actorTaskId}/runs/last/dataset/items?token={yourApiToken}&format=xml&status=SUCCEEDED

In order to save new items to the dataset, send HTTP POST request with JSON payload to the same URL.

Actor runs

The API endpoints described in this section enable you to manage Apify actor runs.

Note that if any returned run object contains usage in dollars, your effective unit pricing at the time of query has been used for computation of this dollar equivalent, and hence it should be used only for informative purposes. You can learn more about platform usage in the documentation.

Run collection

Get user runs list

Gets a list of all runs for a user. The response is a list of objects, where each object contains basic information about a single actor run.

The endpoint supports pagination using the limit and offset parameters and it will not return more than 1000 array elements.

By default, the records are sorted by the startedAt field in ascending order. Therefore, you can use pagination to incrementally fetch all records while new ones are still being created. To sort the records in descending order, use desc=1 parameter. You can also filter runs by status (available statuses).

Authorizations:
httpBearerapiKey
query Parameters
offset
number <double>
Example: offset=10

Number of array elements that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of array elements to return. The default value (as well as the maximum) is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the startedAt field in descending order. By default, they are sorted in ascending order.

status
string
Example: status=SUCCEEDED

Return only runs with the provided status (available statuses)

Responses

Response Schema: application/json
required
object (PaginationResponse)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (RunShort)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .runs()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Run object and its storages

This is not a single endpoint, but an entire group of endpoints that lets you retrieve the run or any of its default storages.

The endpoints accept the same HTTP methods and query parameters as the respective storage endpoints. The base path that represents the actor run object is:

/v2/actor-runs/{runId}{?token}

In order to access the default storages of the actor run, i.e. log, key-value store, dataset and request queue, use the following endpoints:

  • /v2/actor-runs/{runId}/log{?token}

  • /v2/actor-runs/{runId}/key-value-store{?token}

  • /v2/actor-runs/{runId}/dataset{?token}

  • /v2/actor-runs/{runId}/request-queue{?token}

These API endpoints have the same usage as the equivalent storage endpoints. For example, /v2/actor-runs/{runId}/key-value-store has the same HTTP method and parameters as the Key-value store object endpoint.

Additionally, each of the above API endpoints supports all sub-endpoints of the original one:

Log

  • /v2/actor-runs/{runId}/log Log

Key-value store

  • /v2/actor-runs/{runId}/key-value-store/keys{?token} Key collection

  • /v2/actor-runs/{runId}/key-value-store/records/{recordKey}{?token} Record

Dataset

Request queue

For example, to download data from a dataset of the actor run in XML format, send HTTP GET request to the following URL:

https://api.apify.com/v2/actor-runs/{runId}/dataset/items?format=xml

In order to save new items to the dataset, send HTTP POST request with JSON payload to the same URL.

Get run

This is not a single endpoint, but an entire group of endpoints that lets you retrieve the run or any of its default storages.

The endpoints accept the same HTTP methods and query parameters as the respective storage endpoints.

The base path that represents the actor run object is:

/v2/actor-runs/{runId}{?token}

In order to access the default storages of the actor run, i.e. log, key-value store, dataset and request queue, use the following endpoints:

  • /v2/actor-runs/{runId}/log{?token}
  • /v2/actor-runs/{runId}/key-value-store{?token}
  • /v2/actor-runs/{runId}/dataset{?token}
  • /v2/actor-runs/{runId}/request-queue{?token}

These API endpoints have the same usage as the equivalent storage endpoints.

For example, /v2/actor-runs/{runId}/key-value-store has the same HTTP method and parameters as the Key-value store object endpoint.

Additionally, each of the above API endpoints supports all sub-endpoints of the original one:

Log

  • /v2/actor-runs/{runId}/log Log

Key-value store

  • /v2/actor-runs/{runId}/key-value-store/keys{?token} Key collection
  • /v2/actor-runs/{runId}/key-value-store/records/{recordKey}{?token} Record

Dataset

Request queue

For example, to download data from a dataset of the actor run in XML format, send HTTP GET request to the following URL:

https://api.apify.com/v2/actor-runs/{runId}/dataset/items?format=xml

In order to save new items to the dataset, send HTTP POST request with JSON payload to the same URL.Gets an object that contains all the details about a specific run of an actor.

By passing the optional waitForFinish parameter the API endpoint will synchronously wait for the run to finish.

This is useful to avoid periodic polling when waiting for actor run to complete.

This endpoint does not require the authentication token. Instead, calls are authenticated using a hard-to-guess ID of the run. However, if you access the endpoint without the token, certain attributes, such as usageUsd and usageTotalUsd, will be hidden.

Authorizations:
httpBearerapiKey
path Parameters
runId
required
string
Example: 3KH8gEpp4d8uQSe8T

Run ID.

query Parameters
waitForFinish
number <double>
Example: waitForFinish=60

The maximum number of seconds the server waits for the run to finish. By default it is 0, the maximum value is 60. If the build finishes in time then the returned run object will have a terminal status (e.g. SUCCEEDED), otherwise it will have a transitional status (e.g. RUNNING).

Responses

Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const run = await apifyClient
    .run('<RUN ID>')
    .get();

console.log(run);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete run

Delete run

ClientsApify API JavaScript Client ReferenceDelete the run. Only finished runs can be deleted. Only the person or organization that initiated the run can delete it.

Authorizations:
httpBearerapiKey
path Parameters
runId
required
string
Example: 3KH8gEpp4d8uQSe8T

Run ID.

Responses

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient.run('<RUN ID>').delete();

Abort run

Abort run

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceAborts an actor run and returns an object that contains all the details about the run.

Only runs that are starting or running are aborted. For runs with status FINISHED, FAILED, ABORTING and TIMED-OUT this call does nothing.

Authorizations:
httpBearerapiKey
path Parameters
runId
required
string
Example: 3KH8gEpp4d8uQSe8T

Run ID.

query Parameters
gracefully
boolean
Example: gracefully=true

If true passed, the actor run will abort gracefully. It will send aborting and persistState event into run and force-stop the run after 30 seconds. It is helpful in cases where you plan to resurrect the run later.

Responses

Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const abortedRun = await apifyClient
    .run('<RUN ID>')
    .abort();

console.log(abortedRun);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Metamorph run

Metamorph run

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceTransforms an actor run into a run of another actor with a new input.

This is useful if you want to use another actor to finish the work of your current actor run, without the need to create a completely new run and waiting for its finish.

For the users of your actors, the metamorph operation is transparent, they will just see your actor got the work done.

Internally, the system stops the Docker container corresponding to the actor run and starts a new container using a different Docker image.

All the default storages are preserved and the new input is stored under the INPUT-METAMORPH-1 key in the same default key-value store.

For more information, see the Actor docs.

Authorizations:
httpBearerapiKey
path Parameters
runId
required
string
Example: 3KH8gEpp4d8uQSe8T

Actor run ID.

query Parameters
targetActorId
required
string
Example: targetActorId=HDSasDasz78YcAPEB

ID of a target actor that the run should be transformed into.

build
string
Example: build=beta

Optional build of the target actor.

It can be either a build tag or build number. By default, the run uses the build specified in the default run configuration for the target actor (typically latest).

Responses

Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const metamorphedRun = await apifyClient
    .run('<RUN ID>')
    .metamorph('<ACTOR ID>');

console.log(metamorphedRun);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Reboot run

Reboot run

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceReboots an actor run and returns an object that contains all the details about the rebooted run.

Only runs that are running, i.e. runs with status RUNNING can be rebooted.

The run's container will be restarted, so any data not persisted in the key-value store, dataset, or request queue will be lost.

Authorizations:
httpBearerapiKey
path Parameters
runId
required
string
Example: 3KH8gEpp4d8uQSe8T

Actor run ID.

Responses

Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const rebootedRun = await apifyClient
    .run('<RUN ID>')
    .reboot();

console.log(rebootedRun);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Resurrect run

Resurrect run

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceResurrects a finished actor run and returns an object that contains all the details about the resurrected run. Only finished runs, i.e. runs with status FINISHED, FAILED, ABORTED and TIMED-OUT can be resurrected. Run status will be updated to RUNNING and its container will be restarted with the same storages (the same behaviour as when the run gets migrated to the new server).

For more information, see the Actor docs.

Authorizations:
httpBearerapiKey
path Parameters
runId
required
string
Example: 3KH8gEpp4d8uQSe8T

Run ID.

query Parameters
build
string
Example: build=0.1.234

Specifies the actor build to run. It can be either a build tag or build number. By default, the run uses the build specified in the run that is being resurrected (typically latest).

timeout
number
Example: timeout=60

Optional timeout for the run, in seconds. By default, the run uses a timeout specified in the run that is being resurrected.

memory
number
Example: memory=256

Responses

Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const resurrectedRun = await apifyClient
    .run('<RUN ID>')
    .resurrect();

console.log(resurrectedRun);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Charge events in run

Charge events in run

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceCharge for events in the run of your pay per event Actor. The event you are charging for must be one of the configured events in your Actor. If the Actor is not set up as pay per event, or if the event is not configured, the endpoint will return an error. The endpoint must be called from the Actor run itself, with the same API token that the run was started with.

Note that pay per events Actors are still in alpha. Please, reach out to us with any questions or feedback.

Authorizations:
httpBearerapiKey
path Parameters
runId
required
string
Example: 3KH8gEpp4d8uQSe8T

Run ID.

header Parameters
idempotency-key
string
Example: 2024-12-09T01:23:45.000Z-random-uuid

Always pass a unique idempotency key (any unique string) for each charge to avoid double charging in case of retries or network errors.

Request Body schema: application/json
required

Define which event, and how many times, you want to charge for.

eventName
required
string
eventCount
required
number

Responses

Request samples

Content type
application/json
{
  • "eventName": "ANALYZE_PAGE",
  • "eventCount": 1
}

Update status message

Update status message

You can set a single status message on your run that will be displayed in the Apify Console UI. During an actor run, you will typically do this in order to inform users of your actor about the actor's progress.

The request body must contain runId and statusMessage properties. The isStatusMessageTerminal property is optional and it indicates if the status message is the very last one. In the absence of a status message, the platform will try to substitute sensible defaults.

Authorizations:
httpBearerapiKey
path Parameters
runId
required
string
Example: 3KH8gEpp4d8uQSe8T

Run ID.

Request Body schema: application/json
required
runId
required
string
statusMessage
required
string
isStatusMessageTerminal
boolean

Responses

Response Schema: application/json
required
object (Run)
id
required
string
actId
required
string
userId
required
string
actorTaskId
string or null
startedAt
required
string
finishedAt
required
string
status
required
string
statusMessage
string or null
isStatusMessageTerminal
boolean or null
required
object (RunMeta)
required
object (RunStats)
required
object (RunOptions)
buildId
required
string
exitCode
number or null
defaultKeyValueStoreId
required
string
defaultDatasetId
required
string
defaultRequestQueueId
required
string
buildNumber
required
string
containerUrl
required
string
isContainerServerReady
boolean or null
gitBranchName
string or null
(any or null) or RunUsage (object)
usageTotalUsd
number or null
(any or null) or RunUsage (object)

Request samples

Content type
application/json
{
  • "runId": "3KH8gEpp4d8uQSe8T",
  • "statusMessage": "Actor has finished",
  • "isStatusMessageTerminal": true
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Actor builds

The API endpoints described in this section enable you to manage Apify actor builds.

Note that if any returned build object contains usage in dollars, your effective unit pricing at the time of query has been used for computation of this dollar equivalent, and hence it should be used only for informative purposes. You can learn more about platform usage in the documentation.

Delete build

ClientsApify API JavaScript Client ReferenceDelete the build. The build that is the current default build for the Actor cannot be deleted.

Only users with build permissions for the Actor can delete builds.

Authorizations:
httpBearerapiKey
path Parameters
buildId
required
string
Example: soSkq9ekdmfOslopH

ID of the build you want to get, found in the build's Info tab.

Responses

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient.build('<BUILD ID>').delete();

Build collection

Get user builds list

Gets a list of all builds for a user. The response is a JSON array of objects, where each object contains basic information about a single build.

The endpoint supports pagination using the limit and offset parameters and it will not return more than 1000 records.

By default, the records are sorted by the startedAt field in ascending order. Therefore, you can use pagination to incrementally fetch all builds while new ones are still being started. To sort the records in descending order, use the desc=1 parameter.

Authorizations:
httpBearerapiKey
query Parameters
offset
number <double>
Example: offset=10

Number of records that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of records to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the startedAt field in descending order. By default, they are sorted in ascending order.

Responses

Response Schema: application/json
required
object
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (BuildShort)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .builds()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Build object

Get build

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets an object that contains all the details about a specific build of an Actor.

By passing the optional waitForFinish parameter the API endpoint will synchronously wait for the build to finish. This is useful to avoid periodic polling when waiting for an Actor build to finish.

This endpoint does not require the authentication token. Instead, calls are authenticated using a hard-to-guess ID of the build. However, if you access the endpoint without the token, certain attributes, such as usageUsd and usageTotalUsd, will be hidden.

Authorizations:
apiKeyActorBuildshttpBearerActorBuilds
path Parameters
buildId
required
string
Example: soSkq9ekdmfOslopH

ID of the build you want to get, found in the build's Info tab.

query Parameters
waitForFinish
number <double>
Example: waitForFinish=60

The maximum number of seconds the server waits for the build to finish. By default it is 0, the maximum value is 60.

If the build finishes in time then the returned build object will have a terminal status (e.g. SUCCEEDED), otherwise it will have a transitional status (e.g. RUNNING).

Responses

Response Schema: application/json
required
object (Build)
id
required
string
actId
required
string
userId
required
string
startedAt
required
string
finishedAt
string or null
status
required
string
required
object (BuildsMeta)
(any or null) or BuildStats (object)
(any or null) or BuildOptions (object)
(any or null) or BuildUsage (object)
usageTotalUsd
number or null
(any or null) or BuildUsage (object)
inputSchema
string or null
Deprecated
readme
string or null
Deprecated
buildNumber
required
string
ActorDefinition (object) or null

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const build = await apifyClient
    .build('<BUILD ID>')
    .get();

console.log(build);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete build

Abort build

Abort build

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceAborts an Actor build and returns an object that contains all the details about the build.

Only builds that are starting or running are aborted. For builds with status FINISHED, FAILED, ABORTING and TIMED-OUT this call does nothing.

Authorizations:
httpBearerapiKey
path Parameters
buildId
required
string
Example: 3KH8gEpp4d8uQSe8T

Build ID.

Responses

Response Schema: application/json
required
object (Build)
id
required
string
actId
required
string
userId
required
string
startedAt
required
string
finishedAt
string or null
status
required
string
required
object (BuildsMeta)
(any or null) or BuildStats (object)
(any or null) or BuildOptions (object)
(any or null) or BuildUsage (object)
usageTotalUsd
number or null
(any or null) or BuildUsage (object)
inputSchema
string or null
Deprecated
readme
string or null
Deprecated
buildNumber
required
string
ActorDefinition (object) or null

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const abortedBuild = await apifyClient
    .build('<BUILD ID>')
    .abort();

console.log(abortedBuild);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Build log

Check out Logs for full reference.

Get log

Check out Logs for full reference.

Authorizations:
httpBearerapiKey
path Parameters
buildId
required
string
Example: HG7ML7M8z78YcAPEB

ID of the Actor build.

query Parameters
stream
required
boolean
Example: stream=false

If true or 1 then the logs will be streamed as long as the run or build is running.

download
required
boolean
Example: download=false

If true or 1 then the web browser will download the log file rather than open it in a tab.

Responses

Response Schema: text/plain
string

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const buildLog = await apifyClient
    .build('<BUILD ID>')
    .log()
    .get();

console.log(buildLog);

Response samples

Content type
text/plain
2017-07-14T06:00:49.733Z Application started.
2017-07-14T06:00:49.741Z Input: { test: 123 }
2017-07-14T06:00:49.752Z Some useful debug information follows.

Key-value stores

This section describes API endpoints to manage Key-value stores. Key-value store is a simple storage for saving and reading data records or files. Each data record is represented by a unique key and associated with a MIME content type. Key-value stores are ideal for saving screenshots, actor inputs and outputs, web pages, PDFs or to persist the state of crawlers. For more information, see the Key-value store documentation.

Note that some of the endpoints do not require the authentication token, the calls are authenticated using a hard-to-guess ID of the key-value store.

Store collection

Get list of key-value stores

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets the list of key-value stores owned by the user.

The response is a list of objects, where each objects contains a basic information about a single key-value store.

The endpoint supports pagination using the limit and offset parameters and it will not return more than 1000 array elements.

By default, the records are sorted by the createdAt field in ascending order, therefore you can use pagination to incrementally fetch all key-value stores while new ones are still being created. To sort the records in descending order, use the desc=1 parameter.

Authorizations:
httpBearerapiKey
query Parameters
offset
number <double>
Example: offset=10

Number of records that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of records to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the startedAt field in descending order. By default, they are sorted in ascending order.

unnamed
boolean
Example: unnamed=true

If true or 1 then all the stores are returned. By default, only named key-value stores are returned.

Responses

Response Schema: application/json
required
object (PaginationResponse)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (KeyValueStore)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .keyValueStores()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create key-value store

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceCreates a key-value store and returns its object. The response is the same object as returned by the Get store endpoint.

Keep in mind that data stored under unnamed store follows data retention period.

It creates a store with the given name if the parameter name is used. If there is another store with the same name, the endpoint does not create a new one and returns the existing object instead.

Authorizations:
httpBearerapiKey
query Parameters
name
string
Example: name=eshop-values

Custom unique name to easily identify the store in the future.

Responses

Response Headers
Location
any
Response Schema: application/json
required
object (KeyValueStore)
id
required
string
name
required
string
userId
string or null
username
string or null
createdAt
required
string
modifiedAt
required
string
accessedAt
required
string
actId
string or null
actRunId
string or null
object (KeyValueStoreStats)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const store = await apifyClient
    .keyValueStores()
    .getOrCreate('<STORE NAME>');

console.log(store);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Store object

Get store

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets an object that contains all the details about a specific key-value store.

Authorizations:
apiKeyStoreIdhttpBearerStoreId
path Parameters
storeId
required
string
Example: WkzbQMuFYuamGv3YF

Key-value store ID or username~store-name.

Responses

Response Schema: application/json
required
object (KeyValueStore)
id
required
string
name
required
string
userId
string or null
username
string or null
createdAt
required
string
modifiedAt
required
string
accessedAt
required
string
actId
string or null
actRunId
string or null
object (KeyValueStoreStats)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const store = await apifyClient
    .keyValueStore('<STORE ID>')
    .get();

console.log(store);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update store

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceUpdates a key-value store's name using a value specified by a JSON object passed in the PUT payload.

The response is the updated key-value store object, as returned by the Get store API endpoint.

Authorizations:
httpBearerapiKey
path Parameters
storeId
required
string
Example: WkzbQMuFYuamGv3YF

Key-value store ID or username~store-name.

Request Body schema: application/json
required
name
required
string

Responses

Response Schema: application/json
required
object (KeyValueStore)
id
required
string
name
required
string
userId
string or null
username
string or null
createdAt
required
string
modifiedAt
required
string
accessedAt
required
string
actId
string or null
actRunId
string or null
object (KeyValueStoreStats)

Request samples

Content type
application/json
{
  • "name": "new-store-name"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete store

ClientsApify API JavaScript Client ReferenceDeletes a key-value store.

Authorizations:
httpBearerapiKey
path Parameters
storeId
required
string
Example: WkzbQMuFYuamGv3YF

Key-value store ID or username~store-name.

Responses

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient
    .keyValueStore('<STORE ID>')
    .delete();

Key collection

Get list of keys

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceReturns a list of objects describing keys of a given key-value store, as well as some information about the values (e.g. size).

This endpoint is paginated using exclusiveStartKey and limit parameters

Authorizations:
apiKeyStoreIdhttpBearerStoreId
path Parameters
storeId
required
string
Example: WkzbQMuFYuamGv3YF

Key-value store ID or username~store-name.

query Parameters
exclusiveStartKey
string
Example: exclusiveStartKey=Ihnsp8YrvJ8102Kj

All keys up to this one (including) are skipped from the result.

limit
number <double>
Example: limit=100

Number of keys to be returned. Maximum value is 1000.

Responses

Response Schema: application/json
required
object (ListOfKeysResponse)
required
Array of objects (items)
count
required
number
limit
required
number
exclusiveStartKey
string
isTruncated
required
boolean
nextExclusiveStartKey
string

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .keyValueStore('<STORE ID>')
    .listKeys();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Record

Get record

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets a value stored in the key-value store under a specific key.

The response body has the same Content-Encoding header as it was set in Put record.

If the request does not define the Accept-Encoding HTTP header with the right encoding, the record will be decompressed.

Most HTTP clients support decompression by default. After using the HTTP client with decompression support, the Accept-Encoding header is set by the client and body is decompressed automatically.

Authorizations:
apiKeyStoreIdhttpBearerStoreId
path Parameters
storeId
required
string
Example: WkzbQMuFYuamGv3YF

Key-value store ID or username~store-name.

recordKey
required
string
Example: some key

Key of the record.

Responses

Response Schema: application/json
foo
required
string
Response Headers
Location
any

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const record = await apifyClient
    .keyValueStore('<STORE ID>')
    .getRecord('<RECORD KEY>');

console.log(record);

Response samples

Content type
application/json
{
  • "foo": "bar"
}

Put record

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceStores a value under a specific key to the key-value store.

The value is passed as the PUT payload and it is stored with a MIME content type defined by the Content-Type header and with encoding defined by the Content-Encoding header.

To save bandwidth, storage, and speed up your upload, send the request payload compressed with Gzip compression and add the Content-Encoding: gzip header. It is possible to set up another compression type with Content-Encoding request header.

Below is a list of supported Content-Encoding types.

  • Gzip compression: Content-Encoding: gzip
  • Deflate compression: Content-Encoding: deflate
  • Brotli compression: Content-Encoding: br
Authorizations:
httpBearerapiKey
path Parameters
storeId
required
string
Example: WkzbQMuFYuamGv3YF

Key-value store ID or username~store-name.

recordKey
required
string
Example: some key

Key of the record.

header Parameters
Content-Encoding
required
string
Value: "gzip"
Example: gzip
Request Body schema: application/json
required
foo
string

Responses

Response Headers
Location
any
Response Schema: application/json
object

Request samples

Content type
application/json
{
  • "foo": "bar"
}

Response samples

Content type
application/json
{ }

Delete record

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceRemoves a record specified by a key from the key-value store.

Authorizations:
httpBearerapiKey
path Parameters
storeId
required
string
Example: WkzbQMuFYuamGv3YF

Key-value store ID or username~store-name.

recordKey
required
string
Example: some key

Key of the record.

Responses

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient
    .keyValueStore('<STORE ID>')
    .deleteRecord('<RECORD KEY>');

Datasets

This section describes API endpoints to manage Datasets.

Dataset is a storage for structured data, where each record stored has the same attributes, such as online store products or real estate offers. You can imagine it as a table, where each object is a row and its attributes are columns. Dataset is an append-only storage - you can only add new records to it but you cannot modify or remove existing records. Typically it is used to store crawling results. For more information, see the Datasets documentation.

Note that some of the endpoints do not require the authentication token, the calls are authenticated using the hard-to-guess ID of the dataset.

Dataset collection

Get list of datasets

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceLists all of a user's datasets. The response is a JSON array of objects, where each object contains basic information about one dataset. By default, the objects are sorted by the createdAt field in ascending order, therefore you can use pagination to incrementally fetch all datasets while new ones are still being created. To sort them in descending order, use desc=1 parameter. The endpoint supports pagination using limit and offset parameters and it will not return more than 1000 array elements.

Authorizations:
httpBearerapiKey
query Parameters
offset
number <double>
Example: offset=10

Number of array elements that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of array elements to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the startedAt field in descending order. By default, they are sorted in ascending order.

unnamed
boolean
Example: unnamed=true

If true or 1 then all the datasets are returned. By default only named datasets are returned.

Responses

Response Schema: application/json
required
object (PaginationResponse)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (DatasetListItem)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .datasets()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create dataset

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceCreates a dataset and returns its object. Keep in mind that data stored under unnamed dataset follows data retention period. It creates a dataset with the given name if the parameter name is used. If a dataset with the given name already exists then returns its object.

Authorizations:
httpBearerapiKey
query Parameters
name
string
Example: name=eshop-items

Custom unique name to easily identify the dataset in the future.

Responses

Response Headers
Location
any
Response Schema: application/json
required
object (Dataset)
id
required
string
name
required
string
userId
required
string
createdAt
required
string
modifiedAt
required
string
accessedAt
required
string
itemCount
required
number
cleanItemCount
required
number
actId
string or null
actRunId
string or null
fields
Array of strings or null

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const dataset = await apifyClient
    .datasets()
    .getOrCreate('<DATASET NAME>');

console.log(dataset);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Dataset

Get dataset

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceReturns dataset object for given dataset ID.

NOTE: Keep in mind that attributes itemCount and cleanItemCount are not propagated right away after data are pushed into a dataset. There is a short period (up to 5 seconds) during which these counters may not match with exact counts in dataset items.

Authorizations:
httpBearerapiKey
path Parameters
datasetId
required
string
Example: WkzbQMuFYuamGv3YF

Dataset ID or username~dataset-name.

query Parameters
token
string
Example: token=soSkq9ekdmfOslopH

API authentication token. It is required only when using the username~dataset-name format for datasetId.

Responses

Response Schema: application/json
required
object (Dataset)
id
required
string
name
required
string
userId
required
string
createdAt
required
string
modifiedAt
required
string
accessedAt
required
string
itemCount
required
number
cleanItemCount
required
number
actId
string or null
actRunId
string or null
fields
Array of strings or null

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const dataset = await apifyClient
    .dataset('<DATASET ID>')
    .get();

console.log(dataset);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update dataset

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceUpdates a dataset's name using a value specified by a JSON object passed in the PUT payload. The response is the updated dataset object, as returned by the Get dataset API endpoint.

Authorizations:
httpBearerapiKey
path Parameters
datasetId
required
string
Example: WkzbQMuFYuamGv3YF

Dataset ID or username~dataset-name.

Request Body schema: application/json
required
name
required
string

Responses

Response Schema: application/json
required
object (Dataset)
id
required
string
name
required
string
userId
required
string
createdAt
required
string
modifiedAt
required
string
accessedAt
required
string
itemCount
required
number
cleanItemCount
required
number
actId
string or null
actRunId
string or null
fields
Array of strings or null

Request samples

Content type
application/json
{
  • "name": "new-dataset-name"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete dataset

ClientsApify API JavaScript Client ReferenceDeletes a specific dataset.

Authorizations:
httpBearerapiKey
path Parameters
datasetId
required
string
Example: WkzbQMuFYuamGv3YF

Dataset ID or username~dataset-name.

Responses

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient
    .dataset('<DATASET ID>')
    .delete();

Item collection

Get items

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceReturns data stored in the dataset in a desired format.

Response format

The format of the response depends on format query parameter.

The format parameter can have one of the following values:

json, jsonl, xml, html, csv, xlsx and rss.

The following table describes how each format is treated.

Format Items
json The response is a JSON, JSONL or XML array of raw item objects.
jsonl
xml
html The response is a HTML, CSV or XLSX table, where columns correspond to the properties of the item and rows correspond to each dataset item.
csv
xlsx
rss The response is a RSS file. Each item is displayed as child elements of one <item>.

Note that CSV, XLSX and HTML tables are limited to 500 columns and the column names cannot be longer than 200 characters. JSON, XML and RSS formats do not have such restrictions.

Hidden fields

The top-level fields starting with the # character are considered hidden. These are useful to store debugging information and can be omitted from the output by providing the skipHidden=1 or clean=1 query parameters. For example, if you store the following object to the dataset:


{
    productName: "iPhone Xs",
    description: "Welcome to the big screens."
    #debug: {
        url: "https://www.apple.com/lae/iphone-xs/",
        crawledAt: "2019-01-21T16:06:03.683Z"
    }
}

The #debug field will be considered as hidden and can be omitted from the results. This is useful to

provide nice cleaned data to end users, while keeping debugging info available if needed. The Dataset object

returned by the API contains the number of such clean items in thedataset.cleanItemCount property.

XML format extension

When exporting results to XML or RSS formats, the names of object properties become XML tags and the corresponding values become tag's children. For example, the following JavaScript object:


{
    name: "Paul Newman",
    address: [
        { type: "home", street: "21st", city: "Chicago" },
        { type: "office", street: null, city: null }
    ]
}

will be transformed to the following XML snippet:


<name>Paul Newman</name>

<address>
  <type>home</type>
  <street>21st</street>
  <city>Chicago</city>
</address>
<address>
  <type>office</type>
  <street/>
  <city/>
</address>

If the JavaScript object contains a property named @ then its sub-properties are exported as attributes of the parent XML element. If the parent XML element does not have any child elements then its value is taken from a JavaScript object property named #.

For example, the following JavaScript object:


{
  "address": [{
    "@": {
      "type": "home"
    },
    "street": "21st",
    "city": "Chicago"
  },
  {
    "@": {
      "type": "office"
    },
    "#": 'unknown'
  }]
}

will be transformed to the following XML snippet:


<address type="home">
  <street>21st</street>
  <city>Chicago</city>
</address>

<address type="office">unknown</address>

This feature is also useful to customize your RSS feeds generated for various websites.

By default the whole result is wrapped in a <items> element and each page object is wrapped in a <item> element.

You can change this using xmlRoot and xmlRow url parameters.

Pagination

The generated response supports pagination. The pagination is always performed with the granularity of a single item, regardless whether unwind parameter was provided. By default, the Items in the response are sorted by the time they were stored to the database, therefore you can use pagination to incrementally fetch the items as they are being added.

The maximum number of items that will be returned in a single API call is limited to 250,000.

If you specify desc=1 query parameter, the results are returned in the reverse order than they were stored (i.e. from newest to oldest items). Note that only the order of Items is reversed, but not the order of the unwind array elements.

Authorizations:
apiKeyStoreIdhttpBearerStoreId
path Parameters
datasetId
required
string
Example: WkzbQMuFYuamGv3YF

Dataset ID or username~dataset-name.

query Parameters
format
string
Example: format=json

Format of the results, possible values are: json, jsonl, csv, html, xlsx, xml and rss. The default value is json.

clean
boolean
Example: clean=false

If true or 1 then the API endpoint returns only non-empty items and skips hidden fields (i.e. fields starting with the # character). The clean parameter is just a shortcut for skipHidden=true and skipEmpty=true parameters. Note that since some objects might be skipped from the output, that the result might contain less items than the limit value.

offset
number <double>
Example: offset=0

Number of items that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of items to return. By default there is no limit.

fields
string
Example: fields=myValue,myOtherValue

A comma-separated list of fields which should be picked from the items, only these fields will remain in the resulting record objects. Note that the fields in the outputted items are sorted the same way as they are specified in the fields query parameter. You can use this feature to effectively fix the output format.

omit
string
Example: omit=myValue,myOtherValue

A comma-separated list of fields which should be omitted from the items.

unwind
string
Example: unwind=myValue,myOtherValue

A comma-separated list of fields which should be unwound, in order which they should be processed. Each field should be either an array or an object. If the field is an array then every element of the array will become a separate record and merged with parent object. If the unwound field is an object then it is merged with the parent object. If the unwound field is missing or its value is neither an array nor an object and therefore cannot be merged with a parent object then the item gets preserved as it is. Note that the unwound items ignore the desc parameter.

flatten
string
Example: flatten=myValue

A comma-separated list of fields which should transform nested objects into flat structures.

For example, with flatten="foo" the object {"foo":{"bar": "hello"}} is turned into {"foo.bar": "hello"}.

The original object with properties is replaced with the flattened object.

desc
boolean
Example: desc=true

By default, results are returned in the same order as they were stored. To reverse the order, set this parameter to true or 1.

attachment
boolean
Example: attachment=true

If true or 1 then the response will define the Content-Disposition: attachment header, forcing a web browser to download the file rather than to display it. By default this header is not present.

delimiter
string
Example: delimiter=;

A delimiter character for CSV files, only used if format=csv. You might need to URL-encode the character (e.g. use %09 for tab or %3B for semicolon). The default delimiter is a simple comma (,).

bom
boolean
Example: bom=false

All text responses are encoded in UTF-8 encoding. By default, the format=csv files are prefixed with the UTF-8 Byte Order Mark (BOM), while json, jsonl, xml, html and rss files are not.

If you want to override this default behavior, specify bom=1 query parameter to include the BOM or bom=0 to skip it.

xmlRoot
string
Example: xmlRoot=items

Overrides default root element name of xml output. By default the root element is items.

xmlRow
string
Example: xmlRow=item

Overrides default element name that wraps each page or page function result object in xml output. By default the element name is item.

skipHeaderRow
boolean
Example: skipHeaderRow=true

If true or 1 then header row in the csv format is skipped.

skipHidden
boolean
Example: skipHidden=false

If true or 1 then hidden fields are skipped from the output, i.e. fields starting with the # character.

skipEmpty
boolean
Example: skipEmpty=false

If true or 1 then empty items are skipped from the output.

Note that if used, the results might contain less items than the limit value.

simplified
boolean
Example: simplified=false

If true or 1 then, the endpoint applies the fields=url,pageFunctionResult,errorInfo and unwind=pageFunctionResult query parameters. This feature is used to emulate simplified results provided by the legacy Apify Crawler product and it's not recommended to use it in new integrations.

skipFailedPages
boolean
Example: skipFailedPages=false

If true or 1 then, the all the items with errorInfo property will be skipped from the output.

This feature is here to emulate functionality of API version 1 used for the legacy Apify Crawler product and it's not recommended to use it in new integrations.

Responses

Response Headers
X-Apify-Pagination-Offset
any
X-Apify-Pagination-Limit
any
X-Apify-Pagination-Count
any
X-Apify-Pagination-Total
any
Response Schema:
Array
object

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .dataset('<DATASET ID>')
    .listItems();

console.log(items);

Response samples

Content type
[
  • {
    },
  • {
    }
]

Put items

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceAppends an item or an array of items to the end of the dataset.

The POST payload is a JSON object or a JSON array of objects to save into the dataset.

If the data you attempt to store in the dataset is invalid (meaning any of the items received by the API fails the validation), the whole request is discarded and the API will return a response with status code 400. For more information about dataset schema validation, see Dataset schema.

IMPORTANT: The limit of request payload size for the dataset is 5 MB. If the array exceeds the size, you'll need to split it into a number of smaller arrays.

Authorizations:
httpBearerapiKey
path Parameters
datasetId
required
string
Example: WkzbQMuFYuamGv3YF

Dataset ID or username~dataset-name.

Request Body schema: application/json
required
Array
foo
required
string

Responses

Response Headers
Location
any
Response Schema: application/json
object
Response Schema: application/json
required
object
object
type
required
string

The type of the error.

message
required
string

A human-readable message describing the error.

required
object

Request samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
{ }

Request queues

This section describes API endpoints to manage request queues. Request queue is a storage for a queue of HTTP URLs to crawl, which is typically used for deep crawling of websites where you start with several URLs and then recursively follow links to other pages. The storage supports both breadth-first and depth-first crawling orders. For more information, see the Request queue documentation.

Note that some of the endpoints do not require the authentication token, the calls are authenticated using the hard-to-guess ID of the queue.

Queue collection

Get list of request queues

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceLists all of a user's request queues. The response is a JSON array of objects, where each object

contains basic information about one queue.

By default, the objects are sorted by the createdAt field in ascending order,

therefore you can use pagination to incrementally fetch all queues while new

ones are still being created. To sort them in descending order, use desc=1

parameter. The endpoint supports pagination using limit and offset parameters and it will not return more than 1000

array elements.

Authorizations:
httpBearerapiKey
query Parameters
offset
number <double>
Example: offset=10

Number of array elements that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of array elements to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the startedAt field in descending order. By default, they are sorted in ascending order.

unnamed
boolean
Example: unnamed=true

If true or 1 then all the queues are returned. By default only named queues are returned.

Responses

Response Schema: application/json
required
object
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (RequestQueueShort)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .requestQueues()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create request queue

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceCreates a request queue and returns its object.

Keep in mind that requests stored under unnamed queue follows data retention period.

It creates a queue of given name if the parameter name is used. If a queue with the given name already exists then the endpoint returns

its object.

Authorizations:
httpBearerapiKey
query Parameters
name
string
Example: name=example-com

Custom unique name to easily identify the queue in the future.

Responses

Response Headers
Location
any
Response Schema: application/json
required
object (RequestQueue)
id
required
string
name
string
userId
required
string
createdAt
required
string
modifiedAt
required
string

The modifiedAt is updated whenever the queue is modified. Modifications include adding, updating, or removing requests, as well as locking or unlocking requests in the queue.

accessedAt
required
string
totalRequestCount
required
number
handledRequestCount
required
number
pendingRequestCount
required
number
hadMultipleClients
required
boolean

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const queue = await apifyClient
    .requestQueues()
    .getOrCreate('<QUEUE NAME>');

console.log(queue);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Queue

Get request queue

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceReturns queue object for given queue ID.

Authorizations:
apiKeyQueueIdhttpBearerQueueId
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

Responses

Response Schema: application/json
required
object (RequestQueue)
id
required
string
name
string
userId
required
string
createdAt
required
string
modifiedAt
required
string

The modifiedAt is updated whenever the queue is modified. Modifications include adding, updating, or removing requests, as well as locking or unlocking requests in the queue.

accessedAt
required
string
totalRequestCount
required
number
handledRequestCount
required
number
pendingRequestCount
required
number
hadMultipleClients
required
boolean

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const queue = await apifyClient
    .requestQueue('<QUEUE ID>')
    .get();

console.log(queue);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update request queue

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceUpdates a request queue's name using a value specified by a JSON object passed in the PUT payload.

The response is the updated request queue object, as returned by the

Get request queue API endpoint.

Authorizations:
httpBearerapiKey
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

Request Body schema: application/json
required
name
required
string

Responses

Response Schema: application/json
required
object (RequestQueue)
id
required
string
name
string
userId
required
string
createdAt
required
string
modifiedAt
required
string

The modifiedAt is updated whenever the queue is modified. Modifications include adding, updating, or removing requests, as well as locking or unlocking requests in the queue.

accessedAt
required
string
totalRequestCount
required
number
handledRequestCount
required
number
pendingRequestCount
required
number
hadMultipleClients
required
boolean

Request samples

Content type
application/json
{
  • "name": "new-request-queue-name"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete request queue

ClientsApify API JavaScript Client ReferenceDeletes given queue.

Authorizations:
httpBearerapiKey
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

Responses

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient
    .requestQueue('<QUEUE ID>')
    .delete();

Get request

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceReturns request from queue.

Authorizations:
apiKeyQueueIdhttpBearerQueueId
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

requestId
required
string
Example: xpsmkDlspokDSmklS

Request ID.

Responses

Response Schema: application/json
required
object (RequestQueueItems)
id
required
string
retryCount
required
number
uniqueKey
required
string
url
required
string
method
required
string
loadedUrl
string or null
payload
object or null
noRetry
boolean or null
errorMessages
Array of strings or null
headers
object or null
object (UserData)
handledAt
string or null

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const request = await apifyClient
    .requestQueue('<QUEUE ID>')
    .getRequest('<REQUEST ID>');

console.log(request);

Response samples

Content type
application/json
{}

Update request

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceUpdates a request in a queue. Mark request as handled by setting request.handledAt = new Date().

If handledAt is set, the request will be removed from head of the queue.

Authorizations:
httpBearerapiKey
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

requestId
required
string
Example: xpsmkDlspokDSmklS

Request ID.

query Parameters
forefront
string
Example: forefront=false

Determines if request should be added to the head of the queue or to the end. Default value is false (end of queue).

clientKey
string
Example: clientKey=client-abc

A unique identifier of the client accessing the request queue. It must be a string between 1 and 32 characters long. This identifier is used to determine whether the queue was accessed by multiple clients. If clientKey is not provided,

the system considers this API call to come from a new client. For details, see the hadMultipleClients field returned by the Get head operation.

Request Body schema: application/json
required
id
required
string
retryCount
required
number
uniqueKey
required
string
url
required
string
method
required
string
loadedUrl
string or null
payload
object or null
noRetry
boolean or null
errorMessages
Array of strings or null
headers
object or null
object (UserData)
handledAt
string or null

Responses

Response Schema: application/json
required
object (RequestOperationInfo)
requestId
required
string
wasAlreadyPresent
required
boolean
wasAlreadyHandled
required
boolean

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete request

ClientsApify API JavaScript Client ReferenceDeletes given request from queue.

Authorizations:
httpBearerapiKey
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

requestId
required
string
Example: xpsmkDlspokDSmklS

Request ID.

query Parameters
clientKey
string
Example: clientKey=client-abc

A unique identifier of the client accessing the request queue. It must be a string between 1 and 32 characters long. This identifier is used to determine whether the queue was accessed by multiple clients. If clientKey is not provided,

the system considers this API call to come from a new client. For details, see the hadMultipleClients field returned by the Get head operation.

Responses

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient
    .requestQueue('<QUEUE ID>')
    .deleteRequest('<REQUEST ID>');

Request collection

List requests

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceReturns a list of requests. This endpoint is paginated using exclusiveStartId and limit parameters.

Authorizations:
httpBearerapiKey
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

query Parameters
clientKey
string
Example: clientKey=client-abc

A unique identifier of the client accessing the request queue. It must be a string between 1 and 32 characters long. This identifier is used to determine whether the queue was accessed by multiple clients. If clientKey is not provided,

the system considers this API call to come from a new client. For details, see the hadMultipleClients field returned by the Get head operation.

exclusiveStartId
string
Example: exclusiveStartId=Ihnsp8YrvJ8102Kj

All requests up to this one (including) are skipped from the result.

limit
number <double>
Example: limit=100

Number of keys to be returned. Maximum value is 10000.

Responses

Response Schema: application/json
required
object
required
Array of objects (RequestQueueItems)
count
required
number
limit
required
number
exclusiveStartId
string

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .requestQueue('<QUEUE ID>')
    .listRequests();

console.log(items);

Response samples

Content type
application/json
{}

Add request

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceAdds request to the queue. Response contains ID of the request and info if request was already present in the queue or handled.

If request with same uniqueKey was already present in the queue then returns an ID of existing request.

Authorizations:
httpBearerapiKey
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

query Parameters
clientKey
string
Example: clientKey=client-abc

A unique identifier of the client accessing the request queue. It must be a string between 1 and 32 characters long. This identifier is used to determine whether the queue was accessed by multiple clients. If clientKey is not provided,

the system considers this API call to come from a new client. For details, see the hadMultipleClients field returned by the Get head operation.

forefront
string
Example: forefront=false

Determines if request should be added to the head of the queue or to the end. Default value is false (end of queue).

Request Body schema: application/json
required
uniqueKey
required
string
url
required
string
method
required
string

Responses

Response Schema: application/json
required
object (RequestOperationInfo)
requestId
required
string
wasAlreadyPresent
required
boolean
wasAlreadyHandled
required
boolean

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Request

Request lock

Prolong request lock

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceProlongs request lock. The request lock can be prolonged only by the client that has locked it using Get and lock head operation.

Authorizations:
httpBearerapiKey
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

requestId
required
string
Example: xpsmkDlspokDSmklS

Request ID.

query Parameters
lockSecs
required
number <double>
Example: lockSecs=60

For how long second request will be locked.

clientKey
string
Example: clientKey=client-abc

A unique identifier of the client accessing the request queue. It must be a string between 1 and 32 characters long. This identifier is used to for locking and unlocking requests. You can delete or prolong lock only for requests that were locked by by same client key or from the same Actor run.

forefront
string
Example: forefront=false

Determines if request should be added to the head of the queue or to the end after lock expires.

Responses

Response Schema: application/json
object
lockExpiresAt
required
string

Date when lock expires.

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const result = await apifyClient
    .requestQueue('<QUEUE ID>')
    .prolongRequestLock(
        '<REQUEST ID>',
        {
            lockSecs: 3600,
        },
    );

console.log(result);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete request lock

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceDeletes a request lock. The request lock can be deleted only by the client that has locked it using Get and lock head operation.

Authorizations:
httpBearerapiKey
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

requestId
required
string
Example: xpsmkDlspokDSmklS

Request ID.

query Parameters
clientKey
string
Example: clientKey=client-abc

A unique identifier of the client accessing the request queue. It must be a string between 1 and 32 characters long. This identifier is used to for locking and unlocking requests. You can delete or prolong lock only for requests that were locked by by same client key or from the same Actor run.

forefront
string
Example: forefront=false

Determines if request should be added to the head of the queue or to the end after lock was removed.

header Parameters
Content-Type
required
string
Value: "application/json"
Example: application/json

Responses

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient
    .requestQueue('<QUEUE ID>')
    .deleteRequestLock('<REQUEST ID>');

Queue head

Get head

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceReturns given number of first requests from the queue.

The response contains the hadMultipleClients boolean field which indicates that the queue was accessed by more than one client (with unique or empty clientKey).

This field is used by Apify SDK to determine whether the local cache is consistent with the request queue, and thus optimize performance of certain operations.

Authorizations:
httpBearerapiKey
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

query Parameters
limit
number <double>
Example: limit=100

How many items from queue should be returned.

clientKey
string
Example: clientKey=client-abc

A unique identifier of the client accessing the request queue. It must be a string between 1 and 32 characters long. This identifier is used to determine whether the queue was accessed by multiple clients. If clientKey is not provided,

the system considers this API call to come from a new client. For details, see the hadMultipleClients field returned by the Get head operation.

Responses

Response Schema: application/json
required
object
limit
required
number
queueModifiedAt
required
string
hadMultipleClients
required
boolean
required
Array of objects

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const head = await apifyClient
    .requestQueue('<QUEUE ID>')
    .listHead();

console.log(head);

Response samples

Content type
application/json
{}

Queue head with locks

Get head and lock

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceReturns the given number of first requests from the queue and locks them for the given time.

If this endpoint locks the request, no other client or run will be able to get and lock these requests.

The response contains the hadMultipleClients boolean field which indicates that the queue was accessed by more than one client (with unique or empty clientKey).

Authorizations:
httpBearerapiKey
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

query Parameters
lockSecs
required
number <double>
Example: lockSecs=60

How long the requests will be locked for (in seconds).

limit
number <double> <= 25
Example: limit=25

How many items from the queue should be returned.

clientKey
string
Example: clientKey=client-abc

A unique identifier of the client accessing the request queue. It must be a string between 1 and 32 characters long.

Responses

Response Schema: application/json
required
object
limit
required
number
queueModifiedAt
required
string

The modifiedAt is updated whenever the queue is modified. Modifications include adding, updating, or removing requests, as well as locking or unlocking requests in the queue.

queueHasLockedRequests
boolean

Whether the queue contains requests locked by any client (either the one calling the endpoint or a different one).

clientKey
string
hadMultipleClients
required
boolean
lockSecs
required
number
required
Array of objects

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const result = await apifyClient
    .requestQueue('<QUEUE ID>')
    .listAndLockHead({
        lockSecs: 300,
    });

console.log(result);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Batch request operations

Add requests

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceAdds requests to the queue in batch. The maximum requests in batch is limit to 25. The response contains an array of unprocessed and processed requests.

If any add operation fails because the request queue rate limit is exceeded or an internal failure occurs,

the failed request is returned in the unprocessedRequests response parameter.

You can resend these requests to add. It is recommended to use exponential backoff algorithm for these retries.

If a request with the same uniqueKey was already present in the queue, then it returns an ID of the existing request.

Authorizations:
httpBearerapiKey
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

query Parameters
clientKey
string
Example: clientKey=client-abc

A unique identifier of the client accessing the request queue. It must be a string between 1 and 32 characters long

forefront
string
Example: forefront=false

Determines if request should be added to the head of the queue or to the end. Default value is false (end of queue).

Request Body schema: application/json
required
Array
uniqueKey
required
string
url
required
string
method
required
string

Responses

Response Schema: application/json
required
object
required
Array of objects (ProcessedRequest)
required
Array of objects (UnprocessedRequest)

Request samples

Content type
application/json
[]

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete requests

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceBatch-deletes given requests from the queue. The number of requests in a batch is limited to 25. The response contains an array of unprocessed and processed requests.

If any delete operation fails because the request queue rate limit is exceeded or an internal failure occurs,

the failed request is returned in the unprocessedRequests response parameter.

You can re-send these delete requests. It is recommended to use an exponential backoff algorithm for these retries.

Each request is identified by its ID or uniqueKey parameter. You can use either of them to identify the request.

Authorizations:
httpBearerapiKey
path Parameters
queueId
required
string
Example: WkzbQMuFYuamGv3YF

Queue ID or username~queue-name.

query Parameters
clientKey
string
Example: clientKey=client-abc

A unique identifier of the client accessing the request queue. It must be a string between 1 and 32 characters long

header Parameters
Content-Type
required
string
Value: "application/json"
Example: application/json

Responses

Response Schema: application/json
required
object
required
Array of objects (ProcessedRequest)
required
Array of objects (UnprocessedRequest)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const result = await apifyClient
    .requestQueue('<QUEUE ID>')
    .batchDeleteRequests([
        { uniqueKey: 'http://example.com' },
        { uniqueKey: 'http://example.com/2' },
    ]);

console.log(result);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Webhooks

This section describes API endpoints to manage webhooks.

Webhooks provide an easy and reliable way to configure the Apify platform to carry out an action (e.g. a HTTP request to another service) when a certain system event occurs. For example, you can use webhooks to start another actor when an actor run finishes or fails. For more information see Webhooks documentation.

Webhook collection

Get list of webhooks

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets the list of webhooks that the user created.

The endpoint supports pagination using the limit and offset parameters and it will not return more than 1000 records.

By default, the records are sorted by the createdAt field in ascending order. To sort the records in descending order, use the desc=1

parameter.

Authorizations:
httpBearerapiKey
query Parameters
offset
number <double>
Example: offset=10

Number of records that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of records to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the createdAt field in descending order. By default, they are sorted in ascending order.

Responses

Response Schema: application/json
required
object (PaginationResponse)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
Array of objects (WebhookShort)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .webhooks()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create webhook

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceCreates a new webhook with settings provided by the webhook object passed as JSON in the payload.

The response is the created webhook object.

To avoid duplicating a webhook, use the idempotencyKey parameter in the request body.

Multiple calls to create a webhook with the same idempotencyKey will only create the webhook with the first call and return the existing webhook on subsequent calls.

Idempotency keys must be unique, so use a UUID or another random string with enough entropy.

To assign the new webhook to an actor or task, the request body must contain requestUrl, eventTypes, and condition properties.

  • requestUrl is the webhook's target URL, to which data is sent as a POST request with a JSON payload.

  • eventTypes is a list of events that will trigger the webhook, e.g. when the actor run succeeds.

  • condition should be an object containing the ID of the actor or task to which the webhook will be assigned.

  • payloadTemplate is a JSON-like string, whose syntax is extended with the use of variables.

  • headersTemplate is a JSON-like string, whose syntax is extended with the use of variables. Following values will be re-written to defaults: "host", "Content-Type", "X-Apify-Webhook", "X-Apify-Webhook-Dispatch-Id", "X-Apify-Request-Origin"

  • description is an optional string.

  • shouldInterpolateStrings is a boolean indicating whether to interpolate variables contained inside strings in the payloadTemplate

    "isAdHoc" : false,
    "requestUrl" : "https://example.com",
    "eventTypes" : [
        "ACTOR.RUN.SUCCEEDED",
        "ACTOR.RUN.ABORTED"
    ],
    "condition" : {
        "actorId": "janedoe~my-actor",
        "actorTaskId" : "W9bs9JE9v7wprjAnJ"
    },
    "payloadTemplate": "",
    "headersTemplate": "",
    "description": "my awesome webhook",
    "shouldInterpolateStrings": false,

Important: The request must specify the Content-Type: application/json HTTP header.

Authorizations:
httpBearerapiKey
query Parameters
limit
string
offset
string
desc
string
Request Body schema: application/json
required
isAdHoc
boolean or null
eventTypes
required
Array of strings
required
object (WebhookCondition)
idempotencyKey
string or null
ignoreSslErrors
boolean or null
doNotRetry
boolean or null
requestUrl
required
string
payloadTemplate
string or null
headersTemplate
string or null
description
string or null
shouldInterpolateStrings
boolean or null

Responses

Response Headers
Location
any
Response Schema: application/json
required
object (Webhook)
id
required
string
createdAt
required
string
modifiedAt
required
string
userId
required
string
isAdHoc
boolean or null
shouldInterpolateStrings
boolean or null
eventTypes
required
Array of strings
required
object (WebhookCondition)
ignoreSslErrors
required
boolean
doNotRetry
boolean or null
requestUrl
required
string
payloadTemplate
string or null
headersTemplate
string or null
description
string or null
object or null (ExampleWebhookDispatch)
object or null (WebhookStats)

Request samples

Content type
application/json
{
  • "isAdHoc": false,
  • "eventTypes": [
    ],
  • "condition": {
    },
  • "idempotencyKey": "fdSJmdP3nfs7sfk3y",
  • "ignoreSslErrors": false,
  • "doNotRetry": false,
  • "requestUrl": "http://example.com/",
  • "payloadTemplate": "{\\n \\\"userId\\\": {{userId}}...",
  • "headersTemplate": "{\\n \\\"Authorization\\\": Bearer...",
  • "description": "this is webhook description",
  • "shouldInterpolateStrings": false
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Webhook object

Get webhook

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets webhook object with all details.

Authorizations:
httpBearerapiKey
path Parameters
webhookId
required
string
Example: Zib4xbZsmvZeK55ua

Webhook ID.

Responses

Response Schema: application/json
required
object (Webhook)
id
required
string
createdAt
required
string
modifiedAt
required
string
userId
required
string
isAdHoc
boolean or null
shouldInterpolateStrings
boolean or null
eventTypes
required
Array of strings
required
object (WebhookCondition)
ignoreSslErrors
required
boolean
doNotRetry
boolean or null
requestUrl
required
string
payloadTemplate
string or null
headersTemplate
string or null
description
string or null
object or null (ExampleWebhookDispatch)
object or null (WebhookStats)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const webhook = await apifyClient
    .webhook('<WEBHOOK ID>')
    .get();

console.log(webhook);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update webhook

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceUpdates a webhook using values specified by a webhook object passed as JSON in the POST payload.

If the object does not define a specific property, its value will not be updated.

The response is the full webhook object as returned by the

Get webhook endpoint.

The request needs to specify the Content-Type: application/json HTTP header!

When providing your API authentication token, we recommend using the request's Authorization header, rather than the URL. (More info).

Authorizations:
httpBearerapiKey
path Parameters
webhookId
required
string
Example: Zib4xbZsmvZeK55ua

Webhook ID.

Request Body schema: application/json
required
isAdHoc
boolean or null
eventTypes
Array of strings or null
object or null (WebhookCondition)
ignoreSslErrors
boolean or null
doNotRetry
boolean or null
requestUrl
string or null
payloadTemplate
string or null
headersTemplate
string or null
description
string or null
shouldInterpolateStrings
boolean or null

Responses

Response Schema: application/json
required
object (Webhook)
id
required
string
createdAt
required
string
modifiedAt
required
string
userId
required
string
isAdHoc
boolean or null
shouldInterpolateStrings
boolean or null
eventTypes
required
Array of strings
required
object (WebhookCondition)
ignoreSslErrors
required
boolean
doNotRetry
boolean or null
requestUrl
required
string
payloadTemplate
string or null
headersTemplate
string or null
description
string or null
object or null (ExampleWebhookDispatch)
object or null (WebhookStats)

Request samples

Content type
application/json
{
  • "isAdHoc": false,
  • "eventTypes": [
    ],
  • "condition": {
    },
  • "ignoreSslErrors": false,
  • "doNotRetry": false,
  • "requestUrl": "http://example.com/",
  • "payloadTemplate": "{\\n \\\"userId\\\": {{userId}}...",
  • "headersTemplate": "{\\n \\\"Authorization\\\": Bearer...",
  • "description": "this is webhook description",
  • "shouldInterpolateStrings": false
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete webhook

ClientsApify API JavaScript Client ReferenceDeletes a webhook.

Authorizations:
httpBearerapiKey
path Parameters
webhookId
required
string
Example: Zib4xbZsmvZeK55ua

Webhook ID.

Responses

Response Schema: application/json
object

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient
    .webhook('<WEBHOOK ID>')
    .delete();

Response samples

Content type
application/json
{ }

Webhook test

Test webhook

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceTests a webhook. Creates a webhook dispatch with a dummy payload.

Authorizations:
httpBearerapiKey
path Parameters
webhookId
required
string
Example: Zib4xbZsmvZeK55ua

Webhook ID.

Responses

Response Schema: application/json
required
object (WebhookDispatch)
id
required
string
userId
required
string
webhookId
required
string
createdAt
required
string
status
required
string
eventType
required
string
required
object (eventData)
object (calls)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const result = await apifyClient
    .webhook('<WEBHOOK ID>')
    .test();

console.log(result);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Dispatches collection

Get collection

ClientsApify API Python Client ReferenceGets a given webhook's list of dispatches.

Authorizations:
httpBearerapiKey
path Parameters
webhookId
required
string
Example: pVJtoTelgYUq4qJOt

ID number of the webhook.

Responses

Response Schema: application/json
object (PaginationResponse)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (WebhookDispatch)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .webhook('<WEBHOOK ID>')
    .dispatches()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Webhook dispatches

This section describes API endpoints to get webhook dispatches.

Webhook dispatches collection

Get list of webhook dispatches

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets the list of webhook dispatches that the user have.

The endpoint supports pagination using the limit and offset parameters and it will not return more than 1000 records.

By default, the records are sorted by the createdAt field in ascending order. To sort the records in descending order, use the desc=1

parameter.

Authorizations:
httpBearerapiKey
query Parameters
offset
number <double>
Example: offset=10

Number of records that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of records to return. The default value as well as the maximum is 1000.

desc
boolean
Example: desc=true

If true or 1 then the objects are sorted by the createdAt field in descending order. By default, they are sorted in ascending order.

Responses

Response Schema: application/json
object (PaginationResponse)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (WebhookDispatch)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .webhookDispatches()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Webhook dispatch object

Get webhook dispatch

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets webhook dispatch object with all details.

Authorizations:
httpBearerapiKey
path Parameters
dispatchId
required
string
Example: Zib4xbZsmvZeK55ua

Webhook dispatch ID.

Responses

Response Schema: application/json
required
object (WebhookDispatch)
id
required
string
userId
required
string
webhookId
required
string
createdAt
required
string
status
required
string
eventType
required
string
required
object (eventData)
object (calls)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const dispatch = await apifyClient
    .webhookDispatch('<DISPATCH ID>')
    .get();

console.log(dispatch);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Schedules

This section describes API endpoints for managing schedules.

Schedules are used to automatically start your actors at certain times. Each schedule can be associated with a number of actors and actor tasks. It is also possible to override the settings of each actor (task) similarly to when invoking the actor (task) using the API. For more information, see Schedules documentation.

Each schedule is assigned actions for it to perform. Actions can be of two types - RUN_ACTOR and RUN_ACTOR_TASK. For details, see the documentation of the Get schedule endpoint.

Schedules collection

Get list of schedules

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets the list of schedules that the user created.

The endpoint supports pagination using the limit and offset parameters. It will not return more than 1000 records.

By default, the records are sorted by the createdAt field in ascending order. To sort the records in descending order, use the desc=1 parameter.

Authorizations:
httpBearerapiKey
query Parameters
offset
number <double>
Example: offset=10

Number of records that should be skipped at the start. The default value is 0.

limit
number <double>
Example: limit=99

Maximum number of records to return. The default value, as well as the maximum, is 1000.

desc
boolean
Example: desc=true

If true or 1, the objects are sorted by the createdAt field in descending order. By default, they are sorted in ascending order.

Responses

Response Schema: application/json
required
object (GetListOfSchedulesResponseData)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (GetListOfSchedulesResponseDataItems)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .schedules()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create schedule

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceCreates a new schedule with settings provided by the schedule object passed as JSON in the payload. The response is the created schedule object.

The request needs to specify the Content-Type: application/json HTTP header!

When providing your API authentication token, we recommend using the request's Authorization header, rather than the URL. (More info).

Authorizations:
httpBearerapiKey
Request Body schema: application/json
required
name
string or null
isEnabled
boolean or null
isExclusive
boolean or null
cronExpression
string or null
timezone
string or null
description
string or null
Array of objects or null (CreateScheduleActions)

Responses

Response Headers
Location
any
Response Schema: application/json
required
object (Schedule)
id
required
string
userId
required
string
name
required
string
cronExpression
required
string
timezone
required
string
isEnabled
required
boolean
isExclusive
required
boolean
description
string or null
createdAt
required
string
modifiedAt
required
string
nextRunAt
string or null
lastRunAt
string or null
required
Array of objects (ScheduleActions)

Request samples

Content type
application/json
{
  • "name": "my-schedule",
  • "isEnabled": true,
  • "isExclusive": true,
  • "cronExpression": "* * * * *",
  • "timezone": "UTC",
  • "description": "Schedule of actor ...",
  • "actions": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Schedule object

Get schedule

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets the schedule object with all details.

Authorizations:
httpBearerapiKey
path Parameters
scheduleId
required
string
Example: asdLZtadYvn4mBZmm

Schedule ID.

Responses

Response Schema: application/json
required
object (Schedule)
id
required
string
userId
required
string
name
required
string
cronExpression
required
string
timezone
required
string
isEnabled
required
boolean
isExclusive
required
boolean
description
string or null
createdAt
required
string
modifiedAt
required
string
nextRunAt
string or null
lastRunAt
string or null
required
Array of objects (ScheduleActions)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const schedule = await apifyClient
    .schedule('<SCHEDULE ID>')
    .get();

console.log(schedule);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update schedule

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceUpdates a schedule using values specified by a schedule object passed as JSON in the POST payload. If the object does not define a specific property, its value will not be updated.

The response is the full schedule object as returned by the Get schedule endpoint.

The request needs to specify the Content-Type: application/json HTTP header!

When providing your API authentication token, we recommend using the request's Authorization header, rather than the URL. (More info).

Authorizations:
httpBearerapiKey
path Parameters
scheduleId
required
string
Example: asdLZtadYvn4mBZmm

Schedule ID.

Request Body schema: application/json
required
name
string or null
isEnabled
boolean or null
isExclusive
boolean or null
cronExpression
string or null
timezone
string or null
description
string or null
Array of objects or null (CreateScheduleActions)

Responses

Response Schema: application/json
required
object (Schedule)
id
required
string
userId
required
string
name
required
string
cronExpression
required
string
timezone
required
string
isEnabled
required
boolean
isExclusive
required
boolean
description
string or null
createdAt
required
string
modifiedAt
required
string
nextRunAt
string or null
lastRunAt
string or null
required
Array of objects (ScheduleActions)

Request samples

Content type
application/json
{
  • "name": "my-schedule",
  • "isEnabled": true,
  • "isExclusive": true,
  • "cronExpression": "* * * * *",
  • "timezone": "UTC",
  • "description": "Schedule of actor ...",
  • "actions": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete schedule

ClientsApify API JavaScript Client ReferenceDeletes a schedule.

Authorizations:
httpBearerapiKey
path Parameters
scheduleId
required
string
Example: asdLZtadYvn4mBZmm

Schedule ID.

Responses

Response Schema: application/json
object

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
await apifyClient
    .schedule('<SCHEDULE ID>')
    .delete();

Response samples

Content type
application/json
{ }

Schedule log

Get schedule log

ClientsApify API Python Client ReferenceApify API JavaScript Client ReferenceGets the schedule log as a JSON array containing information about up to a 1000 invocations of the schedule.

Authorizations:
httpBearerapiKey
path Parameters
scheduleId
required
string
Example: asdLZtadYvn4mBZmm

Schedule ID.

Responses

Response Schema: application/json
required
Array of objects (ScheduleInvoked)
Array
message
required
string
level
required
string
createdAt
required
string

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const log = await apifyClient
    .schedule('<SCHEDULE ID>')
    .getLog();

console.log(log);

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Store

Apify Store is home to hundreds of public Actors available to the Apify community. The API endpoints described in this section are used to retrieve these Actors.

Note that the endpoints do not require the authentication token.

Store Actors collection

Get list of Actors in store

Gets the list of public Actors in Apify Store. You can use search parameter to search Actors by string in title, name, description, username and readme.

If you need detailed info about a specific Actor, use the Get actor endpoint.

The endpoint supports pagination using the limit and offset parameters. It will not return more than 1,000 records.

Authorizations:
httpBearerapiKey
query Parameters
limit
number <double>
Example: limit=99

Maximum number of elements to return. The default and maximum value is 1,000.

offset
number <double>
Example: offset=10

Number of elements that should be skipped at the start. The default value is 0.

search
string
Example: search=web scraper

String to search by. The search runs on the following fields: title, name, description, username, readme.

sortBy
string
Example: sortBy='popularity'

Specifies the field by which to sort the results. The supported values are relevance (default), popularity, newest and lastUpdate.

category
string
Example: category='AI'

Filters the results by the specified category.

username
string
Example: username='apify'

Filters the results by the specified username.

pricingModel
string
Example: pricingModel='FREE'

Filters the results by the specified pricing model. The supported values are FREE, FLAT_PRICE_PER_MONTH and PRICE_PER_DATASET_ITEM.

Responses

Response Schema: application/json
required
object (StoreData)
total
required
number
offset
required
number
limit
required
number
desc
required
boolean
count
required
number
required
Array of objects (StoreListActor)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const { items } = await apifyClient
    .store()
    .list();

console.log(items);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Logs

The API endpoints described in this section are used the download the logs generated by actor builds and runs. Note that only the trailing 5M characters of the log are stored, the rest is discarded.

Note that the endpoints do not require the authentication token, the calls are authenticated using a hard-to-guess ID of the actor build or run.

Log

Get log

ClientsApify API Python Client ReferenceApify API JavaScript Client Reference

Authorizations:
httpBearerapiKey
path Parameters
buildOrRunId
required
string
Example: HG7ML7M8z78YcAPEB

ID of the actor build or run.

query Parameters
stream
required
boolean
Example: stream=false

If true or 1 then the logs will be streamed as long as the run or build is running.

download
required
boolean
Example: download=false

If true or 1 then the web browser will download the log file rather than open it in a tab.

Responses

Response Schema: text/plain
string

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const log = await apifyClient
    .log('<BUILD OR RUN ID>')
    .get();

console.log(log);

Response samples

Content type
text/plain
2017-07-14T06:00:49.733Z Application started.
2017-07-14T06:00:49.741Z Input: { test: 123 }
2017-07-14T06:00:49.752Z Some useful debug information follows.

Users

The API endpoints described in this section return information about user accounts.

Public data

Get public user data

Returns public information about a specific user account, similar to what can be seen on public profile pages (e.g. https://apify.com/apify).

This operation requires no authentication token.

Authorizations:
httpBearerapiKey
path Parameters
userId
required
string
Example: HGzIk8z78YcAPEB

User ID or username.

Responses

Response Schema: application/json
required
object (UserPublicInfo)
username
required
string
required
object (Profile)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const user = await apifyClient
    .user('<USER ID>')
    .get();

console.log(user);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Private data

Get private user data

Returns information about the current user account, including both public and private information.

The user account is identified by the provided authentication token.

The fields plan, email and profile are omitted when this endpoint is accessed from Actor run.

Authorizations:
httpBearerapiKey

Responses

Response Schema: application/json
required
object (UserPrivateInfo)
id
required
string
username
required
string
required
object (Profile)
email
required
string
required
object (Proxy)
required
object (Plan)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const user = await apifyClient
    .user('me')
    .get();

console.log(user);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Monthly usage

Get monthly usage

Returns a complete summary of your usage for the current usage cycle, an overall sum, as well as a daily breakdown of usage. It is the same information you will see on your account's Billing page. The information includes your use of storage, data transfer, and request queue usage.

Using the date parameter will show your usage in the usage cycle that includes that date.

Authorizations:
httpBearerapiKey
query Parameters
date
string
Example: date=2020-06-14

Date in the YYYY-MM-DD format.

Responses

Response Schema: application/json
required
object (MonthlyUsage)
required
object (UsageCycle)
required
object (MonthlyServiceUsage)
required
Array of objects (DailyServiceUsages)
totalUsageCreditsUsdBeforeVolumeDiscount
required
number
totalUsageCreditsUsdAfterVolumeDiscount
required
number

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const usage = await apifyClient
    .user('me')
    .monthlyUsage();

console.log(usage);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Account and usage limits

Get limits

Returns a complete summary of your account's limits. It is the same information you will see on your account's Limits page. The returned data includes the current usage cycle, a summary of your limits, and your current usage.

Authorizations:
httpBearerapiKey

Responses

Response Schema: application/json
required
object (AccountLimits)
required
object (MonthlyUsageCycle)
required
object (Limits)
required
object (Current)

Request samples

import { ApifyClient } from 'apify-client';

const apifyClient = new ApifyClient({
    token: '<TOKEN>',
});
const limits = await apifyClient
    .user('me')
    .limits();

console.log(limits);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update limits

Updates the account's limits manageable on your account's Limits page. Specifically the: maxMonthlyUsageUsd and dataRetentionDays limits (see request body schema for more details).

Authorizations:
httpBearerapiKey
Request Body schema: application/json
maxMonthlyUsageUsd
number

If your platform usage in the billing period exceeds the prepaid usage, you will be charged extra. Setting this property you can update your hard limit on monthly platform usage to prevent accidental overage or to limit the extra charges

dataRetentionDays
number

Apify securely stores your ten most recent Actor runs indefinitely, ensuring they are always accessible. Unnamed storages and other Actor runs are automatically deleted after the retention period. If you're subscribed, you can change it to keep data for longer or to limit your usage. Lear more

Responses

Response Schema: application/json
object

Request samples

Content type
application/json
{
  • "maxMonthlyUsageUsd": 300,
  • "dataRetentionDays": 90
}

Response samples

Content type
application/json
{ }