Apify API

The Apify REST API (v2) provides programmatic access to the Apify platform, allowing you to manage actors, run scraping tasks, access datasets, key-value stores, and request queues. Authentication uses Bearer tokens. Rate limits: 250,000 requests/minute globally, 60-400 requests/second per resource.

Documentation

Specifications

SDKs

Schemas & Data

Other Resources

OpenAPI Specification

apify-api.yaml Raw ↑
openapi: 3.0.3
info:
  title: Apify API
  description: >-
    The Apify REST API (v2) provides programmatic access to the Apify platform,
    allowing you to manage actors, run scraping tasks, access datasets, key-value
    stores, and request queues. Rate limits: 250,000 requests/minute globally,
    60-400 requests/second per resource.
  version: "v2"
  contact:
    name: Apify
    url: https://apify.com
  x-generated-from: documentation
servers:
  - url: https://api.apify.com/v2
    description: Apify Production API
security:
  - bearerAuth: []
tags:
  - name: Actors
    description: Manage and run Apify Actors.
  - name: Actor Runs
    description: Monitor and manage Actor run executions.
  - name: Datasets
    description: Manage structured data storage from Actor runs.
  - name: Key-Value Stores
    description: Manage persistent key-value storage.
  - name: Request Queues
    description: Manage URL queues for web crawling.
  - name: Webhooks
    description: Manage webhook notifications for events.
  - name: Schedules
    description: Manage scheduled Actor and task runs.
  - name: Tasks
    description: Manage saved Actor task configurations.
  - name: Users
    description: User and account management.
paths:
  /acts:
    get:
      operationId: listActors
      summary: Apify List Actors
      description: Returns a list of Actors owned by the authenticated user.
      tags: [Actors]
      parameters:
        - name: my
          in: query
          description: If true, return only Actors owned by the user.
          schema: {type: boolean}
        - name: limit
          in: query
          description: Maximum number of results to return.
          schema: {type: integer, default: 10}
        - name: offset
          in: query
          description: Number of results to skip.
          schema: {type: integer, default: 0}
      responses:
        '200':
          description: List of Actors.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActorList'
              examples:
                ListActors200Example:
                  summary: Default listActors 200 response
                  x-microcks-default: true
                  value:
                    data:
                      items:
                        - id: "mTD6bTz2HCjSQHeBn"
                          name: web-scraper
                          username: apify
                          title: Web Scraper
                        - id: "k99HkWZyhsTeHR4Ly"
                          name: cheerio-scraper
                          username: apify
                          title: Cheerio Scraper
                      total: 2
                      offset: 0
                      limit: 10
        '401': {$ref: '#/components/responses/Unauthorized'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /acts/{actorId}:
    get:
      operationId: getActor
      summary: Apify Get Actor
      description: Returns details of a specific Actor.
      tags: [Actors]
      parameters:
        - name: actorId
          in: path
          required: true
          description: Actor ID or username~actorName.
          schema: {type: string}
      responses:
        '200':
          description: Actor details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActorDetail'
              examples:
                GetActor200Example:
                  summary: Default getActor 200 response
                  x-microcks-default: true
                  value:
                    data:
                      id: "mTD6bTz2HCjSQHeBn"
                      name: web-scraper
                      username: apify
                      title: Web Scraper
                      description: Crawls websites and extracts data using JavaScript.
        '401': {$ref: '#/components/responses/Unauthorized'}
        '404': {$ref: '#/components/responses/NotFound'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /acts/{actorId}/runs:
    post:
      operationId: runActor
      summary: Apify Run Actor
      description: >-
        Runs a specific Actor and returns its run details. The Actor is started
        asynchronously by default. Use waitForFinish parameter for synchronous execution.
      tags: [Actors]
      parameters:
        - name: actorId
          in: path
          required: true
          description: Actor ID or username~actorName.
          schema: {type: string}
        - name: waitForFinish
          in: query
          description: Wait for run to finish (max 300 seconds). Returns run details when complete.
          schema: {type: integer}
        - name: memory
          in: query
          description: Memory limit in MB (128-32768).
          schema: {type: integer}
        - name: build
          in: query
          description: Tag or number of the Actor build to run.
          schema: {type: string}
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: Actor input as JSON object.
            examples:
              RunActorRequestExample:
                summary: Default runActor request
                x-microcks-default: true
                value:
                  startUrls:
                    - url: https://example.com
                  maxRequestsPerCrawl: 100
      responses:
        '201':
          description: Actor run started.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Run'
              examples:
                RunActor201Example:
                  summary: Default runActor 201 response
                  x-microcks-default: true
                  value:
                    data:
                      id: "HG7ML7M8z78YcAPEB"
                      actId: "mTD6bTz2HCjSQHeBn"
                      status: RUNNING
                      startedAt: "2026-04-19T10:00:00Z"
        '401': {$ref: '#/components/responses/Unauthorized'}
        '404': {$ref: '#/components/responses/NotFound'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    get:
      operationId: listActorRuns
      summary: Apify List Actor Runs
      description: Returns a list of all runs for a specific Actor.
      tags: [Actor Runs]
      parameters:
        - name: actorId
          in: path
          required: true
          description: Actor ID or username~actorName.
          schema: {type: string}
        - name: limit
          in: query
          description: Maximum number of results.
          schema: {type: integer, default: 10}
        - name: offset
          in: query
          description: Number of results to skip.
          schema: {type: integer, default: 0}
        - name: status
          in: query
          description: Filter by run status.
          schema: {type: string, enum: [READY, RUNNING, SUCCEEDED, FAILED, ABORTING, ABORTED, TIMING-OUT, TIMED-OUT]}
      responses:
        '200':
          description: List of Actor runs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunList'
              examples:
                ListActorRuns200Example:
                  summary: Default listActorRuns 200 response
                  x-microcks-default: true
                  value:
                    data:
                      items:
                        - id: "HG7ML7M8z78YcAPEB"
                          status: SUCCEEDED
                          startedAt: "2026-04-19T10:00:00Z"
                          finishedAt: "2026-04-19T10:05:00Z"
                      total: 1
                      offset: 0
                      limit: 10
        '401': {$ref: '#/components/responses/Unauthorized'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /actor-runs/{runId}:
    get:
      operationId: getRun
      summary: Apify Get Run
      description: Returns details of a specific Actor run.
      tags: [Actor Runs]
      parameters:
        - name: runId
          in: path
          required: true
          description: Actor run ID.
          schema: {type: string}
      responses:
        '200':
          description: Actor run details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Run'
              examples:
                GetRun200Example:
                  summary: Default getRun 200 response
                  x-microcks-default: true
                  value:
                    data:
                      id: "HG7ML7M8z78YcAPEB"
                      actId: "mTD6bTz2HCjSQHeBn"
                      status: SUCCEEDED
                      startedAt: "2026-04-19T10:00:00Z"
                      finishedAt: "2026-04-19T10:05:00Z"
                      defaultDatasetId: "s5gkMuSS6Tsh4iOLF"
        '401': {$ref: '#/components/responses/Unauthorized'}
        '404': {$ref: '#/components/responses/NotFound'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /actor-runs/{runId}/abort:
    post:
      operationId: abortRun
      summary: Apify Abort Run
      description: Aborts a running Actor run.
      tags: [Actor Runs]
      parameters:
        - name: runId
          in: path
          required: true
          description: Actor run ID.
          schema: {type: string}
      responses:
        '200':
          description: Run aborted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Run'
              examples:
                AbortRun200Example:
                  summary: Default abortRun 200 response
                  x-microcks-default: true
                  value:
                    data:
                      id: "HG7ML7M8z78YcAPEB"
                      status: ABORTED
        '401': {$ref: '#/components/responses/Unauthorized'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /datasets:
    get:
      operationId: listDatasets
      summary: Apify List Datasets
      description: Returns a list of datasets owned by the user.
      tags: [Datasets]
      parameters:
        - name: limit
          in: query
          description: Maximum number of results.
          schema: {type: integer, default: 10}
        - name: offset
          in: query
          description: Number of results to skip.
          schema: {type: integer, default: 0}
      responses:
        '200':
          description: List of datasets.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetList'
              examples:
                ListDatasets200Example:
                  summary: Default listDatasets 200 response
                  x-microcks-default: true
                  value:
                    data:
                      items:
                        - id: "s5gkMuSS6Tsh4iOLF"
                          name: my-dataset
                          itemCount: 150
                      total: 1
                      offset: 0
                      limit: 10
        '401': {$ref: '#/components/responses/Unauthorized'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /datasets/{datasetId}/items:
    get:
      operationId: getDatasetItems
      summary: Apify Get Dataset Items
      description: Returns items stored in a dataset. Supports multiple output formats.
      tags: [Datasets]
      parameters:
        - name: datasetId
          in: path
          required: true
          description: Dataset ID.
          schema: {type: string}
        - name: format
          in: query
          description: Output format (json, csv, xml, html, rss, xlsx, jsonl).
          schema: {type: string, enum: [json, csv, xml, html, rss, xlsx, jsonl], default: json}
        - name: limit
          in: query
          description: Maximum number of items.
          schema: {type: integer}
        - name: offset
          in: query
          description: Number of items to skip.
          schema: {type: integer}
        - name: fields
          in: query
          description: Comma-separated list of fields to include.
          schema: {type: string}
      responses:
        '200':
          description: Dataset items.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                      total:
                        type: integer
              examples:
                GetDatasetItems200Example:
                  summary: Default getDatasetItems 200 response
                  x-microcks-default: true
                  value:
                    data:
                      items:
                        - url: "https://example.com"
                          title: "Example Page"
                          price: 29.99
                      total: 1
        '401': {$ref: '#/components/responses/Unauthorized'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /key-value-stores:
    get:
      operationId: listKeyValueStores
      summary: Apify List Key-Value Stores
      description: Returns a list of key-value stores owned by the user.
      tags: [Key-Value Stores]
      responses:
        '200':
          description: List of key-value stores.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KeyValueStoreList'
              examples:
                ListKeyValueStores200Example:
                  summary: Default listKeyValueStores 200 response
                  x-microcks-default: true
                  value:
                    data:
                      items:
                        - id: "WkzbQMuFYuamGv3YQ"
                          name: my-store
                      total: 1
        '401': {$ref: '#/components/responses/Unauthorized'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /key-value-stores/{storeId}/records/{recordKey}:
    get:
      operationId: getRecord
      summary: Apify Get Record
      description: Returns the value of a specific record from a key-value store.
      tags: [Key-Value Stores]
      parameters:
        - name: storeId
          in: path
          required: true
          description: Key-value store ID.
          schema: {type: string}
        - name: recordKey
          in: path
          required: true
          description: Record key.
          schema: {type: string}
      responses:
        '200':
          description: Record value.
          content:
            application/json:
              schema:
                type: object
              examples:
                GetRecord200Example:
                  summary: Default getRecord 200 response
                  x-microcks-default: true
                  value:
                    someKey: someValue
        '401': {$ref: '#/components/responses/Unauthorized'}
        '404': {$ref: '#/components/responses/NotFound'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: setRecord
      summary: Apify Set Record
      description: Stores a value under a specific key in a key-value store.
      tags: [Key-Value Stores]
      parameters:
        - name: storeId
          in: path
          required: true
          description: Key-value store ID.
          schema: {type: string}
        - name: recordKey
          in: path
          required: true
          description: Record key.
          schema: {type: string}
      requestBody:
        content:
          application/json:
            schema:
              type: object
            examples:
              SetRecordRequestExample:
                summary: Default setRecord request
                x-microcks-default: true
                value:
                  someKey: someValue
      responses:
        '200':
          description: Record stored successfully.
          content:
            application/json:
              schema:
                type: object
              examples:
                SetRecord200Example:
                  summary: Default setRecord 200 response
                  x-microcks-default: true
                  value: {}
        '401': {$ref: '#/components/responses/Unauthorized'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /request-queues:
    get:
      operationId: listRequestQueues
      summary: Apify List Request Queues
      description: Returns a list of request queues owned by the user.
      tags: [Request Queues]
      responses:
        '200':
          description: List of request queues.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestQueueList'
              examples:
                ListRequestQueues200Example:
                  summary: Default listRequestQueues 200 response
                  x-microcks-default: true
                  value:
                    data:
                      items:
                        - id: "ZTWed2bBPbQ6CPQEL"
                          name: my-queue
                          pendingRequestCount: 42
                      total: 1
        '401': {$ref: '#/components/responses/Unauthorized'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/me:
    get:
      operationId: getMe
      summary: Apify Get Current User
      description: Returns information about the authenticated user.
      tags: [Users]
      responses:
        '200':
          description: Current user details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
              examples:
                GetMe200Example:
                  summary: Default getMe 200 response
                  x-microcks-default: true
                  value:
                    data:
                      id: "wRsJZtadYvn4mBZmm"
                      username: jsmith
                      email: [email protected]
                      plan: STARTER
        '401': {$ref: '#/components/responses/Unauthorized'}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: "Bearer token from Apify console Settings > Integrations."
  schemas:
    Actor:
      type: object
      description: An Apify Actor.
      properties:
        id: {type: string, description: Actor ID., example: "mTD6bTz2HCjSQHeBn"}
        name: {type: string, description: Actor name., example: web-scraper}
        username: {type: string, description: Owner username., example: apify}
        title: {type: string, description: Display title., example: Web Scraper}
        description: {type: string, description: Actor description.}
    ActorList:
      type: object
      properties:
        data:
          type: object
          properties:
            items:
              type: array
              items: {$ref: '#/components/schemas/Actor'}
            total: {type: integer}
            offset: {type: integer}
            limit: {type: integer}
    ActorDetail:
      type: object
      properties:
        data: {$ref: '#/components/schemas/Actor'}
    Run:
      type: object
      description: An Apify Actor run.
      properties:
        data:
          type: object
          properties:
            id: {type: string, example: "HG7ML7M8z78YcAPEB"}
            actId: {type: string, example: "mTD6bTz2HCjSQHeBn"}
            status:
              type: string
              enum: [READY, RUNNING, SUCCEEDED, FAILED, ABORTING, ABORTED, TIMING-OUT, TIMED-OUT]
              example: RUNNING
            startedAt: {type: string, format: date-time}
            finishedAt: {type: string, format: date-time}
            defaultDatasetId: {type: string}
    RunList:
      type: object
      properties:
        data:
          type: object
          properties:
            items:
              type: array
              items:
                type: object
                properties:
                  id: {type: string}
                  status: {type: string}
                  startedAt: {type: string, format: date-time}
                  finishedAt: {type: string, format: date-time}
            total: {type: integer}
            offset: {type: integer}
            limit: {type: integer}
    Dataset:
      type: object
      description: An Apify dataset for storing structured data.
      properties:
        id: {type: string, example: "s5gkMuSS6Tsh4iOLF"}
        name: {type: string, example: my-dataset}
        itemCount: {type: integer, description: Number of items in the dataset., example: 150}
    DatasetList:
      type: object
      properties:
        data:
          type: object
          properties:
            items:
              type: array
              items: {$ref: '#/components/schemas/Dataset'}
            total: {type: integer}
            offset: {type: integer}
            limit: {type: integer}
    KeyValueStore:
      type: object
      description: An Apify key-value store.
      properties:
        id: {type: string, example: "WkzbQMuFYuamGv3YQ"}
        name: {type: string, example: my-store}
    KeyValueStoreList:
      type: object
      properties:
        data:
          type: object
          properties:
            items:
              type: array
              items: {$ref: '#/components/schemas/KeyValueStore'}
            total: {type: integer}
    RequestQueue:
      type: object
      description: An Apify request queue for managing URLs.
      properties:
        id: {type: string, example: "ZTWed2bBPbQ6CPQEL"}
        name: {type: string, example: my-queue}
        pendingRequestCount: {type: integer, example: 42}
    RequestQueueList:
      type: object
      properties:
        data:
          type: object
          properties:
            items:
              type: array
              items: {$ref: '#/components/schemas/RequestQueue'}
            total: {type: integer}
    User:
      type: object
      description: An Apify user account.
      properties:
        data:
          type: object
          properties:
            id: {type: string, example: "wRsJZtadYvn4mBZmm"}
            username: {type: string, example: jsmith}
            email: {type: string, format: email, example: [email protected]}
            plan: {type: string, enum: [FREE, STARTER, SCALE, BUSINESS, ENTERPRISE], example: STARTER}
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            type: {type: string}
            message: {type: string}
  responses:
    Unauthorized:
      description: Authentication failed.
      content:
        application/json:
          schema: {$ref: '#/components/schemas/Error'}
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema: {$ref: '#/components/schemas/Error'}