# Reddit Scraper — Posts & Comments | from $2/1K (`bovi/reddit-scraper`) Actor

Collect public Reddit posts and comments from the Arctic Shift archive. Get structured records with scores, timestamps, links, authors, and quality fields. Run with subreddit or user targets; no buyer API key or OAuth login. Pricing: $0.002 per Reddit result on Free, plus $0.00005 per Actor Start.

- **URL**: https://apify.com/bovi/reddit-scraper.md
- **Developed by:** [Vitalii Bondarev](https://apify.com/bovi) (community)
- **Categories:** Social media, Marketing, AI
- **Features:** Limited permissions
- **Stats:** 180 total users, 54 monthly users, 83.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.94 / 1,000 reddit results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Reddit Scraper for Posts, Comments, and Users

Reddit Scraper extracts public Reddit posts, comments, and user activity from the [Arctic Shift Reddit archive](https://arctic-shift.photon-reddit.com/api) into flat records with 25+ fields. No buyer API key, OAuth login, or proxy is required; Free-plan runs return at most 10 records.

- Monitor brands, products, and discussions across subreddits.
- Find product questions for lead generation and sentiment analysis.
- Export scores, timestamps, links, authors, flair, and quality indicators.
- Search archived posts and comments by date window.
- Call the Actor from MCP-compatible AI agents through Apify’s hosted MCP server.

### What you get

The only source is the [Arctic Shift Reddit archive](https://arctic-shift.photon-reddit.com/api). Records are flat post or comment rows; unavailable source values are `null`.

| Field family | Fields | Type | When empty or mode-specific |
|---|---|---|---|
| Identity | `id`, `type` (`post` or `comment`) | string | `id` is `null` when unavailable. |
| Content | `subreddit`, `title`, `body`, `author` | string | Blank text is `null`; `title` is `null` on comments. |
| Engagement | `score`, `upvote_ratio`, `num_comments` | integer; number | `upvote_ratio` and `num_comments` are `null` on comments. |
| Time and links | `created_utc`, `permalink`, `url`, `scraped_at` | ISO 8601; string | Missing or unreadable time is `null`; comment `url` equals `permalink`. |
| Post attributes | `is_self`, `over_18`, `spoiler`, `stickied`, `flair_text`, `domain` | boolean; string | On comments, `is_self`, `over_18`, `spoiler`, and `domain` are `null`; `stickied` and author `flair_text` can be filled. |
| Community context | `subreddit_subscribers` | integer | `null` when unavailable. |
| Comment context | `parent_id`, `link_id`, `depth`, `is_submitter` | string; integer; boolean | On posts these are `null`; comment `depth` can be `null`. |
| Quality | `parse_confidence`, `warnings` | number; string array | `warnings` is empty when nothing is missing. |

`parse_confidence` starts at `1.0`; deductions are missing ID `0.5`, title `0.15`, date `0.1`, removed comment body `0.1`, deleted author `0.05`, and missing subreddit `0.05` for posts. `warnings` lists deduction codes.

Optional features:

- `extendedFields: true` adds archive details such as media URLs, linked-post data, deletion metadata, and score snapshot time.
- `addSignals: true` adds English-only, rule-based sentiment and intent signals; it is not AI.
- `addMarkdown: true` adds labeled markdown with title, author, subreddit, date, score, permalink, and body.
- `includeUserProfiles: true` adds one profile summary row per user when available.
- `includeCommunityInfo: true` adds one subreddit summary row when available.

### Sample output

Shortened sample: minor fields are omitted, but every shown value is copied exactly from one dataset record.

```json
{
  "id": "1xpezob",
  "type": "post",
  "subreddit": "Python",
  "title": "Python Notebook: a notebook where the file is just a .py with # %% cells (no dependencies)",
  "body": null,
  "author": "compleathorseplayer",
  "score": 1,
  "upvote_ratio": 1,
  "num_comments": 1,
  "created_utc": "2026-11-06T15:03:31+00:00",
  "permalink": "https://www.reddit.com/r/Python/comments/1xpezob/python_notebook_a_notebook_where_the_file_is_just/",
  "url": "https://www.reddit.com/r/Python/comments/1xpezob/python_notebook_a_notebook_where_the_file_is_just/",
  "parse_confidence": 1,
  "warnings": [],
  "scraped_at": "2026-11-06T19:54:05.839503+00:00"
}
```

### Pricing

You pay per event. Pricing differs by Apify plan and applies to these events:

| Apify plan | Actor Start event | Reddit result event |
|---|---:|---:|
| Free | $0.00005 per event | $0.00200 per event |
| Bronze | $0.0000495 per event | $0.00198 per event |
| Silver | $0.000049 per event | $0.00196 per event |
| Gold | $0.0000485 per event | $0.00194 per event |
| Platinum | $0.000048 per event | $0.00192 per event |
| Diamond | $0.0000475 per event | $0.00190 per event |

- **Actor Start** is charged when the Actor starts. Start events depend on Actor memory, with a minimum of one event.
- **Reddit result** is one dataset row: a post or comment. Optional profiles or subreddit summaries are also rows. Comments are billed at the same rate and can be returned by `includeComments`, `commentKeywords`, `userContent` set to `comments` or `both`, or exact `posts` up to `maxCommentsPerPost` each, default `50`.
- The Actor sends no charge event of its own: each Reddit result is billed once, as the dataset row it is. A post or comment appears once per run, also when two targets reach it.
- At your run's charge limit (max total charge) the run stops reading and says so.
- **1,000 results = $2.00005 on Free** when the minimum one Actor Start event applies.
- **10,000 results = $20.00005 on Free** when the minimum one Actor Start event applies.
- The Apify Free plan includes **$5 of monthly platform usage credit**; with the minimum one Actor Start event, the $5 credit covers **249 full runs (2,490 Reddit results)** at Free-plan prices.
- You pay only for the events listed above. This Actor does not use the Pay per event + usage option, so compute, proxy traffic, and storage are not billed separately.

The Free plan limits this Actor to a 10-record preview per run. A paid Apify plan removes that output cap.

### How to use

1. **Choose** subreddit names, Reddit URLs, usernames, or exact post references.
2. **Set** `maxItems` and `sort` (`new`, `old`, or `top`; `top` also needs `postedAfter` or `postedBefore`).
3. **Add** searches, time windows, comment options, or client-side filters.
4. **Enable** comments, signals, extended fields, profiles, or community summaries when needed.
5. **Run** the Actor and review `parse_confidence`, `warnings`, and the terminal status.
6. **Repeat** runs through Apify Schedules; daily is a reasonable starting point for brand monitoring.

```json
{
  "subreddits": ["python"],
  "sort": "new",
  "maxItems": 50,
  "searchQuery": "async",
  "includeComments": true,
  "commentsMode": "perPost",
  "maxCommentsPerPost": 10
}
```

Export the dataset as JSON or CSV, or read it through the Apify dataset API.

### Input parameters

| Parameter | What it does | Default |
|---|---|---|
| `subreddits`, `urls`, `users`, `posts` | Targets: subreddit names, Reddit listing/profile URLs, usernames, or exact post IDs/URLs. A post URL in `urls` scrapes its whole subreddit; use `posts` for one thread. | Not set |
| `maxItems` | Maximum rows per subreddit or user; discovery shares the total across communities. Accepts 1 through `50000`. | `100` |
| `sort` | `new`, `old`, or `top`; `top` ranks the posted window by archive snapshot score and needs a date bound. | `new` |
| `searchQuery` | Searches post titles; requires a subreddit or user target. | Not set |
| `searchQueries` | Searches multiple post terms, merges with `searchQuery`, and removes duplicates. | Not set |
| `searchIn` | Searches archive `title`, `body`, or `both`. | Not set; title behavior |
| `commentKeywords` | Searches comment bodies for each subreddit or user and can return comments without `includeComments`. | Not set |
| `filterKeywords`, `filterKeywordMode` | Case-insensitive client-side matching using `any`, `all`, or `exactPhrase`. | Not set; `any` when terms are supplied |
| `discoverCommunities` | Finds up to three communities per keyword by name prefix and searches them. | Not set |
| `postedAfter`, `postedBefore`, `commentedAfter`, `commentedBefore` | Bounds post or comment rows using UTC dates, ISO datetimes, or relative periods. | Not set |
| `includeComments`, `commentsMode` | Adds comments. `subreddit` is the subreddit-wide stream; `perPost` fetches comments for returned posts. Without `commentsMode`, comments are read per returned post, one archive request each, so a large `maxItems` makes the run longer. | `false`; mode not set |
| `maxCommentsPerPost`, `maxCommentDepth` | Per-post/exact-thread comment limit and nesting-depth filter. | `50`; depth not set |
| `minScore`, `minComments`, `flairs` | Client-side post filters; flair passes are deduplicated. | Not set |
| `includeNsfw` | Set to `false` to remove posts marked `over_18`. | Not set; preserves current results |
| `excludeAuthors`, `skipStickied`, `skipBots`, `excludeRemoved` | Omits selected authors, stickied rows, likely bots, or archive-marked removed/deleted rows. | Not set |
| `userContent` | For users, selects `posts`, `comments`, or `both`. | Not set |
| `includeUserProfiles`, `includeCommunityInfo` | Adds profile or subreddit summary rows when available. | Not set |
| `onlyNew`, `watchName` | Enables incremental runs; `watchName` is required with `onlyNew` and accepts 1–40 letters, digits, or dashes. | Not set |
| `extendedFields`, `addSignals`, `trackTerms`, `addMarkdown` | Adds archive fields, rule-based signals, matched terms, or markdown. | Not set |
| `proxyConfiguration` | Accepted but not used; archive requests are sent without a proxy. | Not set |
| `disableUsageStats` | Set to `true` to turn off the run summary described in Usage statistics. | `false` |

### Limits and edge cases

| Condition | What you see | What to do |
|---|---|---|
| Free Apify plan | Output is capped at 10 records per run. | Use a paid Apify plan for unrestricted output. |
| `maxItems` or `maxCommentsPerPost` is out of range | Values below 1, above `50000`, or above `1,000` are rejected. | Use values within the accepted ranges. |
| An after/before pair is invalid | The run fails before a result is charged. | Make the after value earlier than the before value. |
| No target, or keyword search without a subreddit or user | The run fails with a target-required message. | Provide a target or use name-prefix discovery without explicit targets. |
| The archive returns no posts | The run succeeds with zero rows and an explained status. | Check spelling, broaden the search, or remove the term. |
| `sort` is `top` without a date bound, or `perPost` lacks `includeComments: true` | The run ends Failed before an archive request and nothing is charged; the reason is also stored in the `OUTPUT` record. | Add a date bound, use `new` or `old`, or enable comments. |
| The archive fails, a later page fails, or title search uses its bounded fallback | Rows already pushed remain in the dataset; delivered partial results are marked in status and `OUTPUT.partial`. | Run again, lower `maxItems`, or broaden the input. |
| More than 100 archive rows share one second | Rows after the first 100 in that second can be missed. | Narrow the time window or run again with a different window. |
| Score or comment-count filters are used | Values are archive snapshots taken about 36 hours after posting, not live values. | Treat them as archive snapshots. |
| A deleted body is unavailable | A removed/deleted post body is `null`; a removed/empty comment body is `null` with `removed_body` and a 0.1 deduction. | Filter using `parse_confidence` and `warnings`. |
| Exact post references are invalid or unknown | Invalid references are not sent to the archive; unknown IDs produce no rows. | Use a bare ID, `t3_<id>`, `https://redd.it/<id>`, or a supported comments URL. |
| `onlyNew` is enabled | The first run sets the starting point; later runs return oldest unseen rows first and retain up to 5,000 seen IDs. Rows arriving over one hour late may be missed. | Keep a stable `watchName`, schedule the Actor, and avoid changing targets or filters. |
| Several terms or flairs use a small scan budget | Rows may be slightly out of order; status can report `Scan limit reached`. | Narrow targets or filters, or run again. |
| Discovery is enabled with explicit targets | Discovery is ignored and the status says so. | Remove explicit targets when using discovery. |

### FAQ

#### How much does it cost to scrape a Reddit subreddit?

See the Pricing table for plan-labelled rates. **1,000 results = $2.00005 on Free** when the minimum one Actor Start event applies.

#### Why did my run return no results or fail?

See Limits and edge cases for validation, empty responses, and archive failures. Check the run status and `OUTPUT` record, then correct the target, input, or date window and run again.

#### Are the archive’s scores live?

No. `score` and `num_comments` are archive snapshots taken about 36 hours after posting.

#### Is using this public Reddit data legal or allowed by the source’s ToS?

The Actor retrieves public data from the Arctic Shift Reddit archive. Whether a particular use is legal or allowed by source terms and applicable law depends on your use case, so review the relevant terms and applicable law.

### Related actors

- [Reddit Scraper — Russian-Language Subreddits](https://apify.com/bovi/reddit-scraper-ru) — related extraction for Russian-language subreddits.
- [Bluesky Scraper — Posts, Profiles & Followers](https://apify.com/bovi/bluesky-scraper) — extracts posts, profiles, and followers from another social platform.
- [Douyin Scraper — Hot Trends, Videos & TikTok China Data](https://apify.com/bovi/douyin-scraper) — collects trends and video data from Douyin.

### Usage statistics

This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.

A copy of the exact record for your run is saved as `USAGE_STATS` in your own Apify key-value store.

To opt out, set `disableUsageStats` to `true` in the input. Nothing is sent then.

[Full list of collected fields](https://api.apify.com/v2/key-value-stores/v9rgHjMKLDGtHf8tD/records/index.html)

# Actor input Schema

## `subreddits` (type: `array`):

Subreddit names to scrape posts from. Each item is a subreddit name (with or without 'r/' prefix). Example: \['python', 'learnpython', 'machinelearning']. Use this for topic/community-based sampling.

## `urls` (type: `array`):

Full Reddit URLs to scrape. Supports subreddit listing pages and user profile pages. Example: \['https://www.reddit.com/r/python/', 'https://www.reddit.com/user/spez/']. Use when you have a direct link rather than a subreddit name.

## `users` (type: `array`):

Reddit usernames to scrape posts and comments from. Each item is a username (with or without 'u/' prefix). Example: \['spez', 'gallowboob']. Use for user activity research.

## `maxItems` (type: `integer`):

Maximum number of posts (or comments) to return per subreddit or user. In community discovery this is the total across all discovered communities. Keep low (25–100) for agent mid-conversation sampling; use higher values (500+) for bulk research exports.

## `sort` (type: `string`):

Sort order for results. 'new' returns most recent posts first (default, best for current sentiment). 'old' returns oldest posts first. 'top' ranks the posted time window by archive snapshot score.

## `searchQuery` (type: `string`):

Filter posts by title keyword. Works in combination with subreddits — e.g. set subreddits=\['python'] and searchQuery='async' to find Python posts about async. Leave empty to get all posts in the subreddit.

## `includeComments` (type: `boolean`):

Set to true to also collect comments, in addition to posts. Comments appear as separate records with type='comment'. Increases result count and run cost. Default: false (posts only).

## `postedAfter` (type: `string`):

Optional UTC start of the post window. Accepts an absolute date (2026-10-01), ISO datetime, or a relative value such as 7 days, 12 hours, 2 weeks, or 3 months. Relative values are resolved once when the run starts.

## `postedBefore` (type: `string`):

Optional UTC end of the post window. Accepts an absolute date, ISO datetime, or relative value such as 7 days. Relative values are resolved once when the run starts.

## `commentedAfter` (type: `string`):

Optional UTC start of the comment window. Accepts an absolute date, ISO datetime, or relative value such as 12 hours. Relative values are resolved once when the run starts.

## `commentedBefore` (type: `string`):

Optional UTC end of the comment window. Accepts an absolute date, ISO datetime, or relative value such as 2 weeks. Relative values are resolved once when the run starts.

## `searchQueries` (type: `array`):

Optional list of post search terms. Each term is searched for each subreddit or user target and merged with searchQuery; duplicate rows are removed.

## `searchIn` (type: `string`):

Archive search field for searchQuery and searchQueries: title, body, or both. Without this input, the existing title-search behavior is used.

## `commentKeywords` (type: `array`):

Optional comment body terms searched for each subreddit or user. Without a post search term, matching comments are returned without fetching posts. With searchQuery or searchQueries, both post and comment rows are returned, even when includeComments is false.

## `filterKeywords` (type: `array`):

Optional client-side terms matched case-insensitively against post title/body or comment body.

## `filterKeywordMode` (type: `string`):

How filterKeywords are applied: any term, all terms, or an exact phrase substring. With filterKeywords set and no mode, any is used.

## `discoverCommunities` (type: `boolean`):

For keyword-only searches without subreddit, user, URL, or post targets, find up to three communities whose names start with each keyword, ordered by subscribers. This matches community names, not topics, and does not search all Reddit. maxItems is the total across the discovered communities.

## `minScore` (type: `integer`):

Client-side minimum score. Score is an archive snapshot taken about 36 hours after posting, not a live score.

## `minComments` (type: `integer`):

Client-side minimum post comment count. The count is an archive snapshot taken about 36 hours after posting, not a live count.

## `flairs` (type: `array`):

Optional post flair names. Each flair is requested in a separate archive pass and matching rows are deduplicated.

## `includeNsfw` (type: `boolean`):

Absent preserves today's results. Set false to drop posts marked over_18 by the archive.

## `excludeAuthors` (type: `array`):

Optional case-insensitive author names to omit from post and comment results.

## `skipStickied` (type: `boolean`):

When true, omit stickied posts and comments.

## `skipBots` (type: `boolean`):

When true, omit authors ending in bot and the AutoModerator account.

## `excludeRemoved` (type: `boolean`):

When true, omit rows marked removed or deleted by the archive metadata.

## `posts` (type: `array`):

Optional exact post IDs or Reddit post URLs, including redd.it and Reddit comments URLs. Invalid references are not sent to the archive. Fetches each post by archive ID and its comments through link_id, up to maxCommentsPerPost.

## `commentsMode` (type: `string`):

With includeComments=true, subreddit collects the existing subreddit-wide stream; perPost collects comments by each returned post link_id. perPost requires includeComments=true.

## `maxCommentsPerPost` (type: `integer`):

For subreddit or user targets with includeComments=true, maximum comments per post. Exact posts targets also include comments up to this value. Default: 50. Lower this to reduce token volume when using results with an AI agent.

## `maxCommentDepth` (type: `integer`):

Optional client-side maximum comment depth.

## `userContent` (type: `string`):

For user targets, collect posts, comments, or both. Without this input, the existing user behavior is used.

## `includeUserProfiles` (type: `boolean`):

Add one user summary row per user target with archive karma, activity counts and dates, and up to ten top interaction communities.

## `includeCommunityInfo` (type: `boolean`):

Add one community summary row per subreddit target with subscribers, description, creation date, and NSFW flag when available.

## `onlyNew` (type: `boolean`):

Keep a named cursor and up to 5,000 seen row IDs for scheduled runs. The first run returns the newest rows; later runs return the oldest unseen rows first, regardless of sort, and continue from the last row pushed.

## `watchName` (type: `string`):

Required when onlyNew is true. Names a persistent store and accepts 1-40 letters, digits, or dashes.

## `extendedFields` (type: `boolean`):

Add optional post/comment archive fields and removal metadata. Missing source values are null.

## `addSignals` (type: `boolean`):

Add deterministic rule-based English sentiment and intent signals. This is rule-based, English only, and not AI.

## `trackTerms` (type: `array`):

Optional terms to list in signals.matchedTerms when they appear in a returned post or comment.

## `addMarkdown` (type: `boolean`):

Add a clean labeled markdown text block for AI pipelines.

## `proxyConfiguration` (type: `object`):

Optional Apify proxy settings. This actor uses Arctic Shift (a free Reddit archive API) and does not require proxy for most runs. Enable only if your network blocks the archive endpoint.

## `disableUsageStats` (type: `boolean`):

See the README Usage statistics section for details.

## Actor input object example

```json
{
  "subreddits": [
    "python"
  ],
  "maxItems": 100,
  "sort": "new",
  "includeComments": false,
  "maxCommentsPerPost": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "disableUsageStats": false
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset containing post, comment, user, and community rows. Optional input modes add extended archive fields, rule-based signals, or markdown.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "subreddits": [
        "python"
    ],
    "maxItems": 100,
    "sort": "new",
    "includeComments": false,
    "maxCommentsPerPost": 50,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("bovi/reddit-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "subreddits": ["python"],
    "maxItems": 100,
    "sort": "new",
    "includeComments": False,
    "maxCommentsPerPost": 50,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("bovi/reddit-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "subreddits": [
    "python"
  ],
  "maxItems": 100,
  "sort": "new",
  "includeComments": false,
  "maxCommentsPerPost": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call bovi/reddit-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,bovi/reddit-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/aRYybou7gMyCAYjCI/builds/JSduUEg0Q5h10yGom/openapi.json
