Skip to main content
Change of provenance

The repository or configuration that created this release differ from a previous release. View details.

Pre-release

This release is a pre-release and may not be stable for production use.

Apify API client for Python

The official Python client for the Apify REST API.

PyPI version PyPI downloads Python versions Build status Coverage License Chat on Discord

apify-client lets you talk to the Apify platform from Python — run Actors, manage storages (datasets, key-value stores, request queues), schedule tasks, configure webhooks, and use everything else exposed by the Apify API. It ships both synchronous and asynchronous clients, fully typed responses, automatic retries with exponential backoff, tiered timeouts, pagination helpers, streaming, and a pluggable HTTP layer.

If you want to build Apify Actors in Python rather than consume the API, use the Apify SDK for Python instead — it bundles this client and adds Actor-side primitives.

Table of contents

Installation

apify-client requires Python 3.11 or higher and is published on PyPI and conda-forge.

  • From PyPI, it can be installed for example with pip:

    pip install apify-client
    

    or with uv:

    uv add apify-client
    

    or any other Python package manager that consumes PyPI.

    The client compresses request bodies with gzip by default (no extra dependencies required). To opt in to brotli (better compression ratio), install the optional extra and pass compression='brotli':

    pip install "apify-client[brotli]"
    # or
    uv add "apify-client[brotli]"
    

    Impit is the default HTTP client and is installed automatically. To use the built-in HTTPX2 client instead, install the optional httpx2 extra, which provides Pydantic's maintained continuation of HTTPX, and pass http_client=Httpx2HttpClient() to ApifyClient.with_custom_http_client():

    pip install "apify-client[httpx2]"
    # or
    uv add "apify-client[httpx2]"
    
  • From conda-forge, it can be installed with conda:

    conda install conda-forge::apify-client
    

Quick start

You'll need an Apify API token — find yours in the Integrations section of Apify Console. Pass it to the client and you're ready to go.

Synchronous client

from apify_client import ApifyClient

client = ApifyClient('MY-APIFY-TOKEN')

# Start an Actor and wait for it to finish.
run = client.actor('apify/hello-world').call(
    run_input={'message': 'Hello, Apify!'},
)
if run is None:
    raise RuntimeError('Actor run was not found.')

# Iterate items from the run's default dataset.
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

Asynchronous client

import asyncio

from apify_client import ApifyClientAsync


async def main() -> None:
    client = ApifyClientAsync('MY-APIFY-TOKEN')

    run = await client.actor('apify/hello-world').call(
        run_input={'message': 'Hello, Apify!'},
    )
    if run is None:
        raise RuntimeError('Actor run was not found.')

    # Iterate items from the run's default dataset.
    async for item in client.dataset(run.default_dataset_id).iterate_items():
        print(item)


asyncio.run(main())

Keep your token secret. It authorizes requests on your behalf and can incur usage costs. Never commit it to source control or expose it to client-side code.

For a guided walkthrough — authenticating, running an Actor, and reading its results — see the Quick start guide.

Features

  • Synchronous and asynchronous clients — pick ApifyClient or ApifyClientAsync to match your codebase; both expose the same API (Asyncio support).
  • Fully typed responses — every method returns a Pydantic model generated from the Apify OpenAPI spec, with IDE autocomplete and runtime validation (Typed models).
  • Automatic retries — exponential backoff for network errors, HTTP 429, and 5xx responses, configurable per client (Retries).
  • Tiered timeouts — short / medium / long tiers picked per endpoint, overridable per call (Timeouts).
  • Pagination and streaming — iterate datasets, key-value store keys, or live logs without manual paging or buffering, and upload large records straight from a file or another stream (Pagination, Streaming).
  • Convenience methods — call(), wait_for_finish(), nested resource access, and other shortcuts that hide platform quirks (Convenience methods).
  • Pluggable HTTP layer — use the default Impit-based client, opt in to the built-in HTTPX2 client, or plug in any custom implementation (HTTP clients).
  • Structured errors — every API error surfaces as an ApifyApiError with HTTP-specific subclasses for precise handling (Error handling).
  • Server Actors — send HTTP requests to an Actor's server interface (formerly Actor Standby), and get the server's URL and OpenAPI specification (Server Actors).
  • Debug logging — opt-in structured logging on the apify_client logger captures request URLs, status codes, retry attempts, and more (Logging).

Usage examples

The client mirrors the platform's resource model. Each entry point returns either a single-resource client for an individual item or a collection client for listing and creating items (Single and collection clients).

List Actors and create one

actors = client.actors()
print(actors.list(limit=10).items)

new_actor = actors.create(name='my-actor')

Stream live logs while a run is in progress

run = client.actor('apify/web-scraper').start(run_input={...})

with client.run(run.id).log().stream() as log_stream:
    for chunk in log_stream.iter_bytes():
        print(chunk.decode(), end='')

Read and write key-value store records

store = client.key_value_store('STORE-ID')
store.set_record('greeting', {'message': 'Hello!'})
record = store.get_record('greeting')

Iterate dataset items with automatic pagination

for item in client.dataset('DATASET-ID').iterate_items(fields=['title', 'url']):
    process(item)

Tune retries and timeouts

from datetime import timedelta

from apify_client import ApifyClient

client = ApifyClient(
    token='MY-APIFY-TOKEN',
    max_retries=8,
    min_delay_between_retries=timedelta(milliseconds=500),
    timeout_long=timedelta(minutes=10),
)

For end-to-end recipes — passing input, managing tasks for reusable input, retrieving and merging Actor data, integrating with Pandas, plugging in a custom HTTP client — see the Guides.

Documentation

The full documentation lives at docs.apify.com/api/client/python.

Section What you'll find
Introduction Overview, prerequisites, and a tour of the client.
Quick start Authenticate, run an Actor, and fetch its results step by step.
Concepts Asyncio, single vs. collection clients, nested clients, error handling, retries, logging, convenience methods, pagination, streaming, HTTP clients, timeouts.
Guides Pass input to an Actor, manage tasks for reusable input, retrieve Actor data, integrate with data libraries (e.g. Pandas), build a custom HTTP client.
Upgrading Migrating between major versions.
API reference Generated reference for every class, method, and model.
Changelog Release history and breaking changes.

Support and community

Contributing

Bug reports, fixes, and improvements are welcome! See CONTRIBUTING.md for the development setup, coding standards, testing, and the release process.

License

Released under the Apache License 2.0.

Metadata

Release files for apify-client 3.4.1b8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Change of provenance

The repository or configuration that created these release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Source distribution (sdist)

Source distribution for apify-client 3.4.1b8
File Size Uploaded Provenance Actions
apify_client-3.4.1b8.tar.gz 187.0 kB With provenance Details for apify_client-3.4.1b8.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for apify-client 3.4.1b8
File Interpreter ABI Platform Actions
apify_client-3.4.1b8-py3-none-any.whl Python 3 none any Details for apify_client-3.4.1b8-py3-none-any.whl

Total release size: 382.9 kB

Release files / apify_client-3.4.1b8.tar.gz

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL apify_client-3.4.1b8.tar.gz
Size 187.0 kB
Tags Source
SHA-256 checksum
How to use checksums
cd67eb657ca832148f6c7fcff5abff71a56fb1b2e610e5aed3c48392f772d778
BLAKE2b-256 checksum
How to use checksums
363e0e3707106bde1709bf4115a3aca2e844cabb5b91acca37bc86836f00f3df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / apify_client-3.4.1b8-py3-none-any.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL apify_client-3.4.1b8-py3-none-any.whl
Size 195.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
be5e0727b828102b58bc34cbae238c5e01068a7460fbdad2ca0b9e0a83ed2d43
BLAKE2b-256 checksum
How to use checksums
bf6663a4d23dff408c982f954b002ad3ea7d9634a1c61360c1db0e243c6bdd2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Security for apify-client 3.4.1b8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Change of provenance

The configuration that created this release differs from a previous release.

While this could reflect a routine change by the project maintainers, it may also indicate that the release files have been compromised.

Select from 2 files

Attestation for apify_client-3.4.1b8.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page