# Beehiiv Newsletter Archive Scraper (`parseforge/beehiiv-newsletter-scraper`) Actor

Pull every public post from one or many Beehiiv newsletters: title, description, image, publish date, author, word count, and excerpt. Discover via the public sitemap, fan across multiple newsletters, filter by keyword. Export to JSON, CSV, or Excel for newsletter research and content trends.

- **URL**: https://apify.com/parseforge/beehiiv-newsletter-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** News, Marketing, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.25 / 1,000 items

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🐝 Beehiiv Newsletter Scraper

> 🚀 **Pull every public post from one or many Beehiiv newsletters.** Multi-source fanout reaches 100+ posts. No login, no API key, no manual scrolling.

> 🕒 **Last updated:** 2026-05-01 · **📊 10 fields** per post · **🐝 50K+ newsletters on Beehiiv** · **⚡ multi-newsletter fanout** · **🆓 sitemap-based discovery**

The **Beehiiv Newsletter Scraper** discovers post URLs via each newsletter's public sitemap and returns title, description, image, publish date, author, word count, excerpt, slug, canonical URL, and scrape timestamp per post. Provide one or many newsletters and the scraper fans across all of them, parallelizing fetches to reach 100+ posts in under two minutes.

Beehiiv powers more than 50,000 newsletters from creators, media brands, and SaaS companies. The platform's growth has put it second only to Substack in the creator-economy newsletter space. This Actor exposes the full post history of any Beehiiv-hosted newsletter as clean structured data for content research, cadence analysis, and competitive benchmarking.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Newsletter operators, content strategists, marketers, founders, content writers | Newsletter research, content gap analysis, competitive benchmarking, audience discovery |

---

### 📋 What the Beehiiv Newsletter Scraper does

Four filtering workflows in a single run:

- 🐝 **Multi-newsletter fanout.** Submit an array of newsletter URLs and the Actor walks each sitemap.
- 📑 **Sitemap discovery.** Each newsletter's `/sitemap.xml` lists all public posts; the Actor filters to real post URLs.
- 🔍 **Keyword filter.** Substring match on post URL to narrow by topic across all newsletters.
- ⚡ **Parallel fetch.** Up to 8 concurrent post fetches with retry logic to keep total run time low.

Each row reports the post URL, slug, title from `og:title`, description from `og:description`, image from `og:image`, publish date from `article:published_time`, author from `article:author`, word count, 600-character excerpt, canonical URL, and scrape timestamp.

> 💡 **Why it matters:** Beehiiv newsletters are a fast-growing slice of independent media. Top writers cross 100k subscribers and influence narratives in finance, tech, and AI. The platform exposes a clean public sitemap on every newsletter, which makes structured discovery practical without browser automation.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>Posts to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
<tr><td><code>newsletterUrls</code></td><td>array of strings</td><td>6 default Beehiiv newsletters</td><td>Newsletter homepages. The Actor reads each sitemap.</td></tr>
<tr><td><code>keywordFilter</code></td><td>string</td><td>empty</td><td>Substring filter on post URL slug. Case-insensitive.</td></tr>
</tbody>
</table>

**Example: 100 posts from a single newsletter.**

```json
{
    "maxItems": 100,
    "newsletterUrls": ["https://www.therundown.ai"]
}
````

**Example: 100 posts about AI across multiple newsletters.**

```json
{
    "maxItems": 100,
    "newsletterUrls": [
        "https://www.therundown.ai",
        "https://newsletter.theaibreak.com",
        "https://aiweekly.com"
    ],
    "keywordFilter": "ai"
}
```

> ⚠️ **Good to Know:** post body text on Beehiiv is paywall-aware; paid posts return only the free preview portion. Posts are URL-encoded by the publisher; the Actor extracts metadata from OG tags rather than relying on platform-specific JSON.

***

### 📊 Output

Each post record contains **10 fields**. Download as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🔗 `url` | string | `"https://www.therundown.ai/ai-for-marketers"` |
| 🔖 `slug` | string | `"ai-for-marketers"` |
| 📰 `title` | string | `"AI for Marketers \| The Rundown AI"` |
| 📝 `description` | string | null | `"Get the latest AI news..."` |
| 🖼️ `image` | string | null | `"https://media.beehiiv.com/cdn-cgi/..."` |
| 📅 `publishedAt` | ISO 8601 | null | `"2026-04-15T13:00:00.000Z"` |
| ✍️ `author` | string | null | `"Rowan Cheung"` |
| 📊 `wordCount` | integer | `1842` |
| 💬 `excerpt` | string | null | First 600 chars of body text |
| 🔗 `canonical` | string | null | `"https://www.therundown.ai/ai-for-marketers"` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-01T01:38:21.144Z"` |

#### 📦 Sample records

<details>
<summary><strong>📰 Public post on a custom-domain newsletter</strong></summary>

```json
{
    "url": "https://www.therundown.ai/ai-for-marketers",
    "slug": "ai-for-marketers",
    "title": "AI for Marketers | The Rundown AI",
    "description": "Get the latest AI news, understand why it matters, and learn how to apply it in your work. Join 2,000,000+ readers from companies like Apple, OpenAI, NASA.",
    "image": "https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/thumbnail/4d03390d-2481-4299-b949-ffd8b38b4c38/landscape_newbanner.png",
    "publishedAt": null,
    "author": null,
    "wordCount": 0,
    "canonical": "https://www.therundown.ai/ai-for-marketers",
    "scrapedAt": "2026-05-01T01:38:21.144Z"
}
```

</details>

<details>
<summary><strong>📈 Long-form post with article meta tags</strong></summary>

```json
{
    "url": "https://www.therundown.ai/p/zuckerberg-500m-ai-biology-swing",
    "slug": "p/zuckerberg-500m-ai-biology-swing",
    "title": "Zuckerberg's $500M AI biology swing | The Rundown AI",
    "description": "Mark Zuckerberg through Biohub announced the Virtual Biology Initiative, a $500M effort to build AI tools that reason about cells.",
    "image": "https://media.beehiiv.com/cdn-cgi/image/fit=cover/uploads/asset/file/zuck-biohub.jpg",
    "publishedAt": "2026-04-29T13:30:00.000Z",
    "author": "Rowan Cheung",
    "wordCount": 1421,
    "excerpt": "Zuck's biggest AI bet yet isn't a chatbot. Through Biohub he just put $500M into a new initiative...",
    "canonical": "https://www.therundown.ai/p/zuckerberg-500m-ai-biology-swing"
}
```

</details>

<details>
<summary><strong>🎓 Course chapter post on a topic page</strong></summary>

```json
{
    "url": "https://www.therundown.ai/ai-tools-course-chapter-3-notebooklm",
    "slug": "ai-tools-course-chapter-3-notebooklm",
    "title": "AI Tools Course Chapter 3: NotebookLM",
    "description": "Get the latest AI news, understand why it matters, and learn how to apply it in your work.",
    "image": "https://media.beehiiv.com/cdn-cgi/image/...",
    "wordCount": 2418,
    "excerpt": "NotebookLM is Google's research assistant. In this chapter we cover...",
    "canonical": "https://www.therundown.ai/ai-tools-course-chapter-3-notebooklm"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🆓 | **No login.** Reads public sitemaps and post HTML, no auth. |
| 🐝 | **Multi-newsletter fanout.** Submit many newsletters, get aggregated results in one run. |
| ⚡ | **Parallel fetch.** Up to 8 concurrent fetches with retry. |
| 🔍 | **Keyword filter.** Cross-newsletter substring match on slug. |
| 📊 | **Word count and excerpt.** Quick sense of post length and tone. |
| 🚀 | **Sub-2-minute runs.** Typical 100-post pull from 6 newsletters finishes in around 73 seconds. |
| 🏷️ | **OG metadata.** Title, description, image pulled from standard meta tags. |

> 📊 In a single 73-second run the Actor returned 100 posts across 6 default Beehiiv newsletters.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| Manual subscribe + scroll | Free | Limited per session | One-shot | None | Account per newsletter |
| RSS readers | Free | Latest 20 only | Live | None | Per-feed setup |
| Generic web scrapers | $$ subscription | Brittle CSS | Daily | None | Engineer hours |
| **⭐ Beehiiv Newsletter Scraper** *(this Actor)* | Pay-per-event | Full sitemap | Live | Keyword, multi-source | None |

Same sitemap and per-post HTML Beehiiv publishes for search engines, exposed as structured rows.

***

### 🚀 How to use

1. 🆓 **Create a free Apify account.** [Sign up here](https://console.apify.com/sign-up?fpr=vmoqkp) and get $5 in free credit.
2. 🔍 **Open the Actor.** Search for "Beehiiv Newsletter" in the Apify Store.
3. ⚙️ **Add newsletter URLs.** One or many Beehiiv newsletter homepages.
4. ▶️ **Click Start.** A 100-post run typically completes in 60 to 90 seconds.
5. 📥 **Download.** Export as CSV, Excel, JSON, or XML.

> ⏱️ Total time from sign-up to first dataset: under five minutes.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%">

#### 📰 Newsletter operators

- Reverse-engineer top newsletter cadence and word count
- Compare image and headline strategies
- Track competitor launch announcements
- Build editorial calendars from real archives

</td>
<td width="50%">

#### 📊 Content strategy

- Mine high-engagement post angles for inspiration
- Map topic mix per newsletter over time
- Identify gap topics audiences ask for
- Benchmark your own newsletter against operators in the same niche

</td>
</tr>
<tr>
<td width="50%">

#### 📰 Journalism

- Track newsletter consolidation and migrations
- Cite specific posts with stable canonical URLs
- Pull background research from creator archives
- Cross-reference posts with public reactions

</td>
<td width="50%">

#### 🤖 AI training

- Build domain corpora from creator content
- Train style models on author-specific archives
- Generate retrieval datasets for newsletter chat agents
- Power summarization tools across publications

</td>
</tr>
</table>

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Empirical datasets for papers, thesis work, and coursework
- Longitudinal studies tracking changes across snapshots
- Reproducible research with cited, versioned data pulls
- Classroom exercises on data analysis and ethical scraping

</td>
<td width="50%">

#### 🎨 Personal and creative

- Side projects, portfolio demos, and indie app launches
- Data visualizations, dashboards, and infographics
- Content research for bloggers, YouTubers, and podcasters
- Hobbyist collections and personal trackers

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Transparency reporting and accountability projects
- Advocacy campaigns backed by public-interest data
- Community-run databases for local issues
- Investigative journalism on public records

</td>
<td width="50%">

#### 🧪 Experimentation

- Prototype AI and machine-learning pipelines with real data
- Validate product-market hypotheses before engineering spend
- Train small domain-specific models on niche corpora
- Test dashboard concepts with live input

</td>
</tr>
</table>

***

### 🔌 Automating Beehiiv Newsletter Scraper

Run this Actor on a schedule, from your codebase, or inside another tool:

- **Node.js** SDK: see [Apify JavaScript client](https://docs.apify.com/api/client/js/) for programmatic runs.
- **Python** SDK: see [Apify Python client](https://docs.apify.com/api/client/python/) for the same flow in Python.
- **HTTP API**: see [Apify API docs](https://docs.apify.com/api/v2) for raw REST integration.

Schedule daily, weekly, or monthly runs from the Apify Console. Pipe results into Google Sheets, S3, BigQuery, or your own webhook with the built-in [integrations](https://docs.apify.com/platform/integrations).

***

### ❓ Frequently Asked Questions

<details>
<summary><strong>🐝 What newsletters does this support?</strong></summary>

Any Beehiiv-hosted newsletter, whether it sits on `slug.beehiiv.com` or a custom domain. The Actor reads the public `/sitemap.xml` exposed for search engines.

</details>

<details>
<summary><strong>🔍 How do I find the right newsletter URL?</strong></summary>

Use the homepage URL of the newsletter as it appears in the browser. Custom domains and beehiiv.com subdomains both work.

</details>

<details>
<summary><strong>📦 How many newsletters can I submit at once?</strong></summary>

The `newsletterUrls` array has no hard cap. The Actor walks each sitemap in order until `maxItems` is reached.

</details>

<details>
<summary><strong>📅 Why do some posts have no publishedAt?</strong></summary>

Beehiiv only emits `article:published_time` on actual newsletter posts. Topic pages and course chapters often omit it. The Actor returns `null` rather than guessing.

</details>

<details>
<summary><strong>📝 Does it return full body content?</strong></summary>

The `excerpt` field gives the first 600 characters of body text. Full body extraction would require a different parsing strategy and is not the primary goal of this Actor.

</details>

<details>
<summary><strong>🔠 What is the difference between url, slug, and canonical?</strong></summary>

`url` is the URL the Actor visited. `slug` is the path portion of that URL. `canonical` is the URL Beehiiv declares as canonical via `<link rel="canonical">`. They usually match.

</details>

<details>
<summary><strong>🛡️ Does this work with paid Beehiiv tiers?</strong></summary>

The Actor reads only the public preview HTML. Paid posts return their free preview text in the excerpt. Subscriber-only full content is not exposed by the Actor.

</details>

<details>
<summary><strong>💼 Can I use this for commercial work?</strong></summary>

Yes. The Actor reads the public sitemap and the public OG tags Beehiiv emits. Always honor each newsletter's terms when republishing content.

</details>

<details>
<summary><strong>💳 Do I need a paid Apify plan?</strong></summary>

The free plan returns up to 10 posts per run. Paid plans return up to 1,000,000.

</details>

<details>
<summary><strong>⚠️ What if a newsletter sitemap returns nothing?</strong></summary>

A small number of Beehiiv newsletters disable their sitemap or move to a non-standard path. Confirm `/sitemap.xml` opens in a browser. [Open a contact form](https://tally.so/r/BzdKgA) with the newsletter URL if a real one returns empty.

</details>

<details>
<summary><strong>🔁 How fresh is the data?</strong></summary>

Live. Each run hits each newsletter's sitemap and post HTML at run time.

</details>

<details>
<summary><strong>⚖️ Is this legal?</strong></summary>

Yes. The Actor reads sitemaps explicitly published for search engine indexing and OG meta tags emitted by every public post.

</details>

***

### 🔌 Integrate with any app

- [**Make**](https://apify.com/integrations/make) - drop run results into 1,800+ apps.
- [**Zapier**](https://apify.com/integrations/zapier) - trigger automations off completed runs.
- [**Slack**](https://apify.com/integrations/slack) - post run summaries to a channel.
- [**Google Sheets**](https://apify.com/integrations/google-sheets) - sync each run into a spreadsheet.
- [**Webhooks**](https://docs.apify.com/platform/integrations/webhooks) - notify your own services on run finish.
- [**Airbyte**](https://apify.com/integrations/airbyte) - load runs into Snowflake, BigQuery, or Postgres.

***

### 🔗 Recommended Actors

- [**📰 Substack Publication Scraper**](https://apify.com/parseforge/substack-publication-scraper) - the same workflow for Substack-hosted newsletters.
- [**💼 Indie Hackers Posts Scraper**](https://apify.com/parseforge/indiehackers-posts-scraper) - mine founder commentary that often parallels newsletter content.
- [**📚 Wikipedia Pageviews Scraper**](https://apify.com/parseforge/wikipedia-pageviews-scraper) - cross-reference newsletter trends with public-interest spikes.
- [**🅱️ Bing Search Scraper**](https://apify.com/parseforge/bing-search-scraper) - track which posts rank for which keywords.
- [**🐙 GitHub Trending Repos Scraper**](https://apify.com/parseforge/github-trending-scraper) - capture the developer-attention layer next to newsletter coverage.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more pre-built scrapers and data tools.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) and we'll route the question to the right person.

***

> Beehiiv is a registered trademark of Beehiiv, Inc. This Actor is not affiliated with or endorsed by Beehiiv. It reads only the public sitemap and OG meta tags every Beehiiv newsletter exposes for search engines.

# Actor input Schema

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000.

## `newsletterUrls` (type: `array`):

Root URLs of Beehiiv newsletters (custom domain or \*.beehiiv.com). Provide one or many; the scraper fans across them until it has enough posts.

## `keywordFilter` (type: `string`):

Only return posts whose URL slug contains this string (case-insensitive).

## Actor input object example

```json
{
  "maxItems": 10,
  "newsletterUrls": [
    "https://www.therundown.ai",
    "https://www.morningbrew.com",
    "https://newsletter.theaibreak.com",
    "https://www.milkroad.com",
    "https://www.bensbites.co",
    "https://aiweekly.com"
  ]
}
```

# 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 = {
    "maxItems": 10,
    "newsletterUrls": [
        "https://www.therundown.ai",
        "https://www.morningbrew.com",
        "https://newsletter.theaibreak.com",
        "https://www.milkroad.com",
        "https://www.bensbites.co",
        "https://aiweekly.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/beehiiv-newsletter-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 = {
    "maxItems": 10,
    "newsletterUrls": [
        "https://www.therundown.ai",
        "https://www.morningbrew.com",
        "https://newsletter.theaibreak.com",
        "https://www.milkroad.com",
        "https://www.bensbites.co",
        "https://aiweekly.com",
    ],
}

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

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

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

```

## CLI example

```bash
echo '{
  "maxItems": 10,
  "newsletterUrls": [
    "https://www.therundown.ai",
    "https://www.morningbrew.com",
    "https://newsletter.theaibreak.com",
    "https://www.milkroad.com",
    "https://www.bensbites.co",
    "https://aiweekly.com"
  ]
}' |
apify call parseforge/beehiiv-newsletter-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/beehiiv-newsletter-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Beehiiv Newsletter Archive Scraper",
        "description": "Pull every public post from one or many Beehiiv newsletters: title, description, image, publish date, author, word count, and excerpt. Discover via the public sitemap, fan across multiple newsletters, filter by keyword. Export to JSON, CSV, or Excel for newsletter research and content trends.",
        "version": "1.0",
        "x-build-id": "R0r6ff9UWenf3mUnN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~beehiiv-newsletter-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-beehiiv-newsletter-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~beehiiv-newsletter-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-beehiiv-newsletter-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~beehiiv-newsletter-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-beehiiv-newsletter-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000."
                    },
                    "newsletterUrls": {
                        "title": "Newsletter URLs",
                        "type": "array",
                        "description": "Root URLs of Beehiiv newsletters (custom domain or *.beehiiv.com). Provide one or many; the scraper fans across them until it has enough posts.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "keywordFilter": {
                        "title": "Keyword filter (optional)",
                        "type": "string",
                        "description": "Only return posts whose URL slug contains this string (case-insensitive)."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
