Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/01_introduction/quick-start.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

import AuthAsyncExample from '!!raw-loader!./code/02_auth_async.py';
import AuthSyncExample from '!!raw-loader!./code/02_auth_sync.py';
Expand Down
2 changes: 1 addition & 1 deletion docs/02_concepts/01_async_support.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ description: Use the async client for non-blocking API calls with Python asyncio
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

import AsyncSupportExample from '!!raw-loader!./code/01_async_support.py';

Expand Down
2 changes: 1 addition & 1 deletion docs/02_concepts/02_single_collection_clients.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

import CollectionAsyncExample from '!!raw-loader!./code/02_collection_async.py';
import CollectionSyncExample from '!!raw-loader!./code/02_collection_sync.py';
Expand Down
2 changes: 1 addition & 1 deletion docs/02_concepts/03_nested_clients.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

import NestedAsyncExample from '!!raw-loader!./code/03_nested_async.py';
import NestedSyncExample from '!!raw-loader!./code/03_nested_sync.py';
Expand Down
2 changes: 1 addition & 1 deletion docs/02_concepts/04_error_handling.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ description: Handle API errors with the ApifyApiError exception and automatic da
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

import ErrorAsyncExample from '!!raw-loader!./code/04_error_async.py';
import ErrorSyncExample from '!!raw-loader!./code/04_error_sync.py';
Expand Down
2 changes: 1 addition & 1 deletion docs/02_concepts/05_retries.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

import RetriesAsyncExample from '!!raw-loader!./code/05_retries_async.py';
import RetriesSyncExample from '!!raw-loader!./code/05_retries_sync.py';
Expand Down
2 changes: 1 addition & 1 deletion docs/02_concepts/07_convenience_methods.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

import CallAsyncExample from '!!raw-loader!./code/07_call_async.py';
import CallSyncExample from '!!raw-loader!./code/07_call_sync.py';
Expand Down
2 changes: 1 addition & 1 deletion docs/02_concepts/08_pagination.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

import PaginationAsyncExample from '!!raw-loader!./code/08_pagination_async.py';
import PaginationSyncExample from '!!raw-loader!./code/08_pagination_sync.py';
Expand Down
2 changes: 1 addition & 1 deletion docs/02_concepts/09_streaming.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

import StreamingAsyncExample from '!!raw-loader!./code/09_streaming_async.py';
import StreamingSyncExample from '!!raw-loader!./code/09_streaming_sync.py';
Expand Down
2 changes: 1 addition & 1 deletion docs/02_concepts/10_custom_http_clients.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ description: Replace the default HTTP client with a custom implementation.
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

import DefaultHttpClientAsyncExample from '!!raw-loader!./code/10_default_http_client_async.py';
import DefaultHttpClientSyncExample from '!!raw-loader!./code/10_default_http_client_sync.py';
Expand Down
2 changes: 1 addition & 1 deletion docs/02_concepts/11_timeouts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ description: Configure the tiered timeout system for controlling how long API re
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

import TimeoutsAsyncExample from '!!raw-loader!./code/11_timeouts_async.py';
import TimeoutsSyncExample from '!!raw-loader!./code/11_timeouts_sync.py';
Expand Down
2 changes: 1 addition & 1 deletion docs/02_concepts/12_typed_models.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ description: Resource client methods return Pydantic models generated from the A
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

import AccessAsyncExample from '!!raw-loader!./code/12_typed_models_access_async.py';
import AccessSyncExample from '!!raw-loader!./code/12_typed_models_access_sync.py';
Expand Down
2 changes: 1 addition & 1 deletion docs/03_guides/05_custom_http_client.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: Use HTTPX as the HTTP client
description: Replace the default Impit HTTP client with one based on HTTPX.
---

import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
Expand Down
2 changes: 1 addition & 1 deletion docs/04_upgrading/upgrading_to_v2.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: Upgrading to v2
description: Breaking changes and migration guide from v1 to v2.
---

import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

This page summarizes the breaking changes between Apify Python API Client v1.x and v2.0.

Expand Down
2 changes: 1 addition & 1 deletion docs/04_upgrading/upgrading_to_v3.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: Upgrading to v3
description: Breaking changes and migration guide from v2 to v3.
---

import ApiLink from '@site/src/components/ApiLink';
import ApiLink from '@theme/ApiLink';

This page summarizes the breaking changes between Apify Python API Client v2.x and v3.0.

Expand Down
10 changes: 0 additions & 10 deletions website/src/components/ApiLink.jsx

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@theme/ApiLink';

import AuthAsyncExample from '!!raw-loader!./code/02_auth_async.py';
import AuthSyncExample from '!!raw-loader!./code/02_auth_sync.py';
import UsageAsyncExample from '!!raw-loader!./code/01_usage_async.py';
Expand Down Expand Up @@ -47,7 +49,7 @@ The API token is used to authorize your requests to the Apify API. You can be ch

## Step 2: Run an Actor

To start an Actor, you need its ID (e.g., `john-doe/my-cool-actor`) and an API token. The Actor's ID is a combination of the username and the Actor owner's username. Use the [`ActorClient`](/reference/class/ActorClient) to run the Actor and wait for it to complete. You can run both your own Actors and [Actors from Apify store](https://docs.apify.com/platform/actors/running/actors-in-store).
To start an Actor, you need its ID (e.g., `john-doe/my-cool-actor`) and an API token. The Actor's ID is a combination of the username and the Actor owner's username. Use the <ApiLink to="class/ActorClient">`ActorClient`</ApiLink> to run the Actor and wait for it to complete. You can run both your own Actors and [Actors from Apify store](https://docs.apify.com/platform/actors/running/actors-in-store).

<Tabs>
<TabItem value="AsyncExample" label="Async client" default>
Expand All @@ -64,7 +66,7 @@ To start an Actor, you need its ID (e.g., `john-doe/my-cool-actor`) and an API t

## Step 3: Provide input to an Actor

Actors often require input, such as URLs to scrape, search terms, or other configuration data. You can pass input as a JSON object when starting the Actor using the [`ActorClient.call`](/reference/class/ActorClient#call) method. Actors respect the input schema defined in the Actor's [input schema](https://docs.apify.com/platform/actors/development/actor-definition/input-schema).
Actors often require input, such as URLs to scrape, search terms, or other configuration data. You can pass input as a JSON object when starting the Actor using the <ApiLink to="class/ActorClient#call">`ActorClient.call`</ApiLink> method. Actors respect the input schema defined in the Actor's [input schema](https://docs.apify.com/platform/actors/development/actor-definition/input-schema).

<Tabs>
<TabItem value="AsyncExample" label="Async client" default>
Expand All @@ -81,7 +83,7 @@ Actors often require input, such as URLs to scrape, search terms, or other confi

## Step 4: Get results from the dataset

To get the results from the dataset, you can use the [`DatasetClient`](/reference/class/DatasetClient) ([`ApifyClient.dataset`](/reference/class/ApifyClient#dataset)) and [`DatasetClient.list_items`](/reference/class/DatasetClient#list_items) method. You need to pass the dataset ID to define which dataset you want to access. You can get the dataset ID from the Actor's run dictionary (represented by `defaultDatasetId`).
To get the results from the dataset, you can use the <ApiLink to="class/DatasetClient">`DatasetClient`</ApiLink> (<ApiLink to="class/ApifyClient#dataset">`ApifyClient.dataset`</ApiLink>) and <ApiLink to="class/DatasetClient#list_items">`DatasetClient.list_items`</ApiLink> method. You need to pass the dataset ID to define which dataset you want to access. You can get the dataset ID from the Actor's run dictionary (represented by `defaultDatasetId`).

<Tabs>
<TabItem value="AsyncExample" label="Async client" default>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@ title: Asyncio support
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
import ApiLink from '@theme/ApiLink';

import AsyncSupportExample from '!!raw-loader!./code/01_async_support.py';

The package provides an asynchronous version of the client, [`ApifyClientAsync`](/reference/class/ApifyClientAsync), which allows you to interact with the Apify API using Python's standard async/await syntax. This enables you to perform non-blocking operations, see the Python [asyncio documentation](https://docs.python.org/3/library/asyncio-task.html) for more information.
The package provides an asynchronous version of the client, <ApiLink to="class/ApifyClientAsync">`ApifyClientAsync`</ApiLink>, which allows you to interact with the Apify API using Python's standard async/await syntax. This enables you to perform non-blocking operations, see the Python [asyncio documentation](https://docs.python.org/3/library/asyncio-task.html) for more information.

The following example demonstrates how to run an Actor asynchronously and stream its logs while it is running:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@theme/ApiLink';

import CollectionAsyncExample from '!!raw-loader!./code/02_collection_async.py';
import CollectionSyncExample from '!!raw-loader!./code/02_collection_sync.py';
import SingleAsyncExample from '!!raw-loader!./code/02_single_async.py';
import SingleSyncExample from '!!raw-loader!./code/02_single_sync.py';

The Apify client interface is designed to be consistent and intuitive across all of its components. When you call specific methods on the main client, you create specialized clients to manage individual API resources. There are two main types of clients:

- [`ActorClient`](/reference/class/ActorClient) - Manages a single resource.
- [`ActorCollectionClient`](/reference/class/ActorCollectionClient) - Manages a collection of resources.
- <ApiLink to="class/ActorClient">`ActorClient`</ApiLink> - Manages a single resource.
- <ApiLink to="class/ActorCollectionClient">`ActorCollectionClient`</ApiLink> - Manages a collection of resources.

<Tabs>
<TabItem value="AsyncExample" label="Async client" default>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@theme/ApiLink';

import NestedAsyncExample from '!!raw-loader!./code/03_nested_async.py';
import NestedSyncExample from '!!raw-loader!./code/03_nested_sync.py';

Expand All @@ -25,4 +27,4 @@ In some cases, the Apify client provides nested clients to simplify working with
</TabItem>
</Tabs>

This direct access to [Dataset](https://docs.apify.com/platform/storage/dataset) (and other storage resources) from the [`RunClient`](/reference/class/RunClient) is especially convenient when used alongside the [`ActorClient.last_run`](/reference/class/ActorClient#last_run) method.
This direct access to [Dataset](https://docs.apify.com/platform/storage/dataset) (and other storage resources) from the <ApiLink to="class/RunClient">`RunClient`</ApiLink> is especially convenient when used alongside the <ApiLink to="class/ActorClient#last_run">`ActorClient.last_run`</ApiLink> method.
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@ title: Error handling
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
import ApiLink from '@theme/ApiLink';

import ErrorAsyncExample from '!!raw-loader!./code/04_error_async.py';
import ErrorSyncExample from '!!raw-loader!./code/04_error_sync.py';

When you use the Apify client, it automatically extracts all relevant data from the endpoint and returns it in the expected format. Date strings, for instance, are seamlessly converted to Python `datetime.datetime` objects. If an error occurs, the client raises an [`ApifyApiError`](/reference/class/ApifyApiError). This exception wraps the raw JSON errors returned by the API and provides additional context, making it easier to debug any issues that arise.
When you use the Apify client, it automatically extracts all relevant data from the endpoint and returns it in the expected format. Date strings, for instance, are seamlessly converted to Python `datetime.datetime` objects. If an error occurs, the client raises an <ApiLink to="class/ApifyApiError">`ApifyApiError`</ApiLink>. This exception wraps the raw JSON errors returned by the API and provides additional context, making it easier to debug any issues that arise.

<Tabs>
<TabItem value="AsyncExample" label="Async client" default>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@theme/ApiLink';

import RetriesAsyncExample from '!!raw-loader!./code/05_retries_async.py';
import RetriesSyncExample from '!!raw-loader!./code/05_retries_sync.py';

Expand All @@ -21,7 +23,7 @@ By default, the client will retry a failed request up to 8 times. The retry inte
- The first retry occurs after approximately 500 milliseconds.
- The second retry occurs after approximately 1,000 milliseconds, and so on.

You can customize this behavior using the following options in the [`ApifyClient`](/reference/class/ApifyClient) constructor:
You can customize this behavior using the following options in the <ApiLink to="class/ApifyClient">`ApifyClient`</ApiLink> constructor:

- `max_retries`: Defines the maximum number of retry attempts.
- `min_delay_between_retries_millis`: Sets the minimum delay between retries (in milliseconds).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@theme/ApiLink';

import CallAsyncExample from '!!raw-loader!./code/07_call_async.py';
import CallSyncExample from '!!raw-loader!./code/07_call_sync.py';

The Apify client provides several convenience methods to handle actions that the API alone cannot perform efficiently, such as waiting for an Actor run to finish without running into network timeouts. These methods simplify common tasks and enhance the usability of the client.

- [`ActorClient.call`](/reference/class/ActorClient#call) - Starts an Actor and waits for it to finish, handling network timeouts internally.
- [`ActorClient.start`](/reference/class/ActorClient#start) - Explicitly waits for an Actor run to finish with customizable timeouts.
- <ApiLink to="class/ActorClient#call">`ActorClient.call`</ApiLink> - Starts an Actor and waits for it to finish, handling network timeouts internally.
- <ApiLink to="class/ActorClient#start">`ActorClient.start`</ApiLink> - Explicitly waits for an Actor run to finish with customizable timeouts.

Additionally, storage-related resources offer flexible options for data retrieval:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@theme/ApiLink';

import PaginationAsyncExample from '!!raw-loader!./code/08_pagination_async.py';
import PaginationSyncExample from '!!raw-loader!./code/08_pagination_sync.py';

Most methods named `list` or `list_something` in the Apify client return a [`ListPage`](/reference/class/ListPage) object. This object provides a consistent interface for working with paginated data and includes the following properties:
Most methods named `list` or `list_something` in the Apify client return a <ApiLink to="class/ListPage">`ListPage`</ApiLink> object. This object provides a consistent interface for working with paginated data and includes the following properties:

- `items` - The main results you're looking for.
- `total` - The total number of items available.
Expand All @@ -35,4 +37,4 @@ The following example demonstrates how to fetch all items from a dataset using p
</TabItem>
</Tabs>

The [`ListPage`](/reference/class/ListPage) interface offers several key benefits. Its consistent structure ensures predictable results for most `list` methods, providing a uniform way to work with paginated data. It also offers flexibility, allowing you to customize the `limit` and `offset` parameters to control data fetching according to your needs. Additionally, it provides scalability, enabling you to efficiently handle large datasets through pagination. This approach ensures efficient data retrieval while keeping memory usage under control, making it ideal for managing and processing large collections.
The <ApiLink to="class/ListPage">`ListPage`</ApiLink> interface offers several key benefits. Its consistent structure ensures predictable results for most `list` methods, providing a uniform way to work with paginated data. It also offers flexibility, allowing you to customize the `limit` and `offset` parameters to control data fetching according to your needs. Additionally, it provides scalability, enabling you to efficiently handle large datasets through pagination. This approach ensures efficient data retrieval while keeping memory usage under control, making it ideal for managing and processing large collections.
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,18 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';

import ApiLink from '@theme/ApiLink';

import StreamingAsyncExample from '!!raw-loader!./code/09_streaming_async.py';
import StreamingSyncExample from '!!raw-loader!./code/09_streaming_sync.py';

Certain resources, such as dataset items, key-value store records, and logs, support streaming directly from the Apify API. This allows you to process large resources incrementally without downloading them entirely into memory, making it ideal for handling large or continuously updated data.

Supported streaming methods:

- [`DatasetClient.stream_items`](/reference/class/DatasetClient#stream_items) - Stream dataset items incrementally.
- [`KeyValueStoreClient.stream_record`](/reference/class/KeyValueStoreClient#stream_record) - Stream key-value store records as raw data.
- [`LogClient.stream`](/reference/class/LogClient#stream) - Stream logs in real time.
- <ApiLink to="class/DatasetClient#stream_items">`DatasetClient.stream_items`</ApiLink> - Stream dataset items incrementally.
- <ApiLink to="class/KeyValueStoreClient#stream_record">`KeyValueStoreClient.stream_record`</ApiLink> - Stream key-value store records as raw data.
- <ApiLink to="class/LogClient#stream">`LogClient.stream`</ApiLink> - Stream logs in real time.

These methods return a raw, context-managed `httpx.Response` object. The response must be consumed within a with block to ensure that the connection is closed automatically, preventing memory leaks or unclosed connections.

Expand Down
Loading
Loading