# PR Newswire Scraper (`parsebird/pr-newswire-scraper`) Actor

Scrape PR Newswire press releases by keyword, news category, company newsroom, or URL: titles, dates, summaries, images, plus full text, company, tickers, and categories. Filter by date. Export to JSON, CSV, or Excel.

- **URL**: https://apify.com/parsebird/pr-newswire-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $11.99 / 1,000 press releases

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

### PR Newswire Scraper

PR Newswire Scraper extracts **press releases from PR Newswire** by keyword, news category, company newsroom, or URL: headline, publication date and time, summary, image, and release ID. Optionally, it also extracts the full release text, issuing company, dateline, stock tickers, categories, and all images. Filter by date range and get one clean row per press release.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Monitor press releases for any keyword, industry, or company: date filters work on list data alone, so you don't pay for slow page-by-page reads just to get a date range, and stock tickers such as NYSE:AES are pulled from each release.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Actor: parsebird/pr-newswire-scraper — scrapes PR Newswire (prnewswire.com) press releases. Input: {"keywords": ["earnings"] (array; each runs its own PR Newswire news search, newest first; leave keywords and startUrls empty to get the latest releases), "startUrls": ["https://www.prnewswire.com/search/news/?keyword=ai", "https://www.prnewswire.com/news-releases/financial-services-latest-news/dividends-list/", "https://www.prnewswire.com/news/leidos/", "https://www.prnewswire.com/news-releases/SLUG-302898368.html"] (search, news category, company newsroom, or single release URLs), "dateFrom": "2026-09-01", "dateTo": "2026-09-30" (optional, YYYY-MM-DD, US Eastern Time, inclusive; relative values like "7 days" also work; works without full text), "includeFullBody": false (true opens each release for full text, company, dateline, tickers, categories, images, modifiedAt), "maxReleases": 50 (per keyword or URL, 0 = no limit; PR Newswire lists up to 10,000 results per search or category), "proxyConfiguration": {"useApifyProxy": false} (optional; switches to Apify Proxy automatically if refused)}. Run via ApifyClient("YOUR_TOKEN").actor("parsebird/pr-newswire-scraper").call(run_input=input). Output, one row per release: releaseId, title, url, publishedAt (ISO 8601 with offset), dateLabel, summary, imageUrl, company, companyNewsroomUrl, modifiedAt, description, dateline, bodyText, source, tickers[] ("EXCHANGE:SYMBOL"), categories[], keywords[], images[], searchQuery, sourceUrl, position. Full-text fields are null/[] unless includeFullBody is true. Pricing: pay per release saved. Get your API token at https://console.apify.com/account#/integrations. Full API spec: https://apify.com/parsebird/pr-newswire-scraper/api
```

### What is PR Newswire Scraper?

PR Newswire Scraper is a **PR Newswire data extraction tool** that reads the public press releases on [PRNewswire.com](https://www.prnewswire.com/), Cision's newswire where companies publish earnings announcements, dividends, product launches, mergers, and other corporate news. PR Newswire has no free public API for this, so the scraper works as a **PR Newswire API alternative** for investors, analysts, PR and communications teams, journalists, and data teams.

The easiest way to try it: keep the prefilled keyword `earnings`, click **Start**, and open the dataset. You get the 20 newest earnings-related press releases with titles, dates, summaries, and links in under 20 seconds.

No PR Newswire account is needed.

### What can PR Newswire Scraper do?

- 🔎 **Keyword search**: each keyword runs its own PR Newswire news search, newest releases first. Many keywords per run.
- 📰 **Latest releases**: leave the inputs empty to get the newest releases across PR Newswire.
- 🏭 **News categories**: paste any category list, such as Dividends, Mining, or Financial Technology, or a category landing page.
- 🏢 **Company newsrooms**: paste a company's PR Newswire newsroom (`/news/COMPANY/`) to collect its release history.
- 📅 **Date range**: keep releases published between two dates. The scraper jumps straight to the start of your range instead of paging through newer releases, and the filter works without full text.
- 📄 **Full release text** (optional): body text, issuing company, dateline city, stock tickers, PR Newswire categories, all images, and last-modified time.
- 📈 **Stock tickers**: exchange and symbol pairs such as `NYSE:AES`, `NASDAQ:VINP`, or `TSX:VZLA`, taken from the release text.

Because PR Newswire Scraper runs on the Apify platform, you also get:

- ⏰ [Scheduling](https://docs.apify.com/platform/schedules) to monitor new press releases hourly or daily.
- 🔌 [API access](https://docs.apify.com/api/v2) and client libraries for Python and JavaScript.
- 🔗 [Integrations](https://apify.com/integrations) with Make, Zapier, Google Sheets, Slack, webhooks, and more.
- 📦 Export to JSON, CSV, Excel, XML, or HTML from the Storage tab or the API.

### What data can you extract from PR Newswire?

| Field | Description |
|-------|-------------|
| `title` | Press release headline |
| `publishedAt` / `dateLabel` | Publication time as ISO 8601 (US Eastern offset) and as PR Newswire shows it |
| `summary` | Teaser text from the list. For keyword searches, PR Newswire shows the passage that matches your keyword |
| `imageUrl` | Main image or company logo |
| `url` / `releaseId` | Release page link and PR Newswire's release ID |
| `company` / `companyNewsroomUrl` | Issuing company and its PR Newswire newsroom\* |
| `bodyText` | Full release text, paragraph by paragraph\* |
| `dateline` | City in the release dateline, e.g. `ARLINGTON, Va.`\* |
| `tickers` | Stock tickers in the release, e.g. `["NYSE:AES"]`\* |
| `categories` / `keywords` | PR Newswire industry and subject categories, and the release's keywords\* |
| `description` / `modifiedAt` / `images` / `source` | Short description, last-modified time, all images, and the release's SOURCE line\* |
| `searchQuery` / `sourceUrl` / `position` | Where the row came from and its position among the releases saved for it |

\* Filled when **Include full release text** is on, and for release URLs you paste.

### How to scrape PR Newswire

1. Open [PR Newswire Scraper](https://apify.com/parsebird/pr-newswire-scraper) in Apify Console and click **Try for free**.
2. Under **Search keywords**, enter one or more keywords, such as `IPO` or `acquisition`. Or paste PR Newswire URLs under **PR Newswire URLs**. Leave both empty for the latest releases.
3. Optionally set **Published on or after** and **Published on or before** to choose a date range.
4. Turn on **Include full release text** if you need the body, company, tickers, and categories.
5. Set **Max releases per keyword or URL**, for example 100. Start small to test.
6. Click **Start** and wait for the run to finish.
7. Open the **Output** tab to preview releases, or export them as JSON, CSV, Excel, XML, or HTML.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `keywords` | array of strings | No | `[]` | Keywords to search PR Newswire for. Each keyword is a separate search. |
| `startUrls` | array of strings | No | `[]` | PR Newswire search, news category, company newsroom, or release URLs. |
| `dateFrom` | string | No | none | Keep releases published on or after this date (`YYYY-MM-DD`, US Eastern Time). |
| `dateTo` | string | No | none | Keep releases published on or before this date (`YYYY-MM-DD`, US Eastern Time). |
| `includeFullBody` | boolean | No | `false` | Open each release for full text, company, dateline, tickers, categories, and images. |
| `maxReleases` | integer | No | 50 | Maximum releases per keyword or URL. `0` means no limit. |
| `proxyConfiguration` | object | No | `{"useApifyProxy": false}` | Optional proxy. The scraper moves to Apify Proxy on its own if PR Newswire refuses requests. |

With no keywords and no URLs, the scraper reads PR Newswire's latest releases.

Example inputs:

```json
{
    "keywords": ["earnings", "dividend"],
    "dateFrom": "2026-09-01",
    "dateTo": "2026-09-30",
    "includeFullBody": true,
    "maxReleases": 500
}
```

```json
{
    "startUrls": [
        "https://www.prnewswire.com/news-releases/financial-services-latest-news/dividends-list/",
        "https://www.prnewswire.com/news/leidos/"
    ],
    "maxReleases": 200
}
```

### Output example

Each press release is one dataset item. Download the results in JSON, CSV, Excel, XML, or HTML. The first item below has full release text on (body shortened here); the second is list data only.

```json
[
    {
        "releaseId": "302903571",
        "title": "AES Announces Quarterly Dividend",
        "url": "https://www.prnewswire.com/news-releases/aes-announces-quarterly-dividend-302903571.html",
        "publishedAt": "2026-10-09T17:00:00-04:00",
        "dateLabel": "17:00 ET",
        "summary": "The Board of Directors of The AES Corporation (NYSE: AES) declared a quarterly common stock dividend of $0.17595 per share payable on November 13,...",
        "imageUrl": "https://mmx.prnewswire.com/media/MS1228908/AES-New-Brand-Logo.jpg?id=OA2994869",
        "company": "The AES Corporation",
        "companyNewsroomUrl": "https://www.prnewswire.com/news/the-aes-corporation/",
        "modifiedAt": "2026-10-09T17:00:10-04:00",
        "description": "/PRNewswire/ -- The Board of Directors of The AES Corporation (NYSE: AES) declared a quarterly common stock dividend of $0.17595 per share payable on November...",
        "dateline": "ARLINGTON, Va.",
        "bodyText": "ARLINGTON, Va., Oct. 9, 2026 /PRNewswire/ -- The Board of Directors of The AES Corporation (NYSE: AES) declared a quarterly common stock dividend of $0.17595 per share payable on November 13, 2026 to shareholders of record at the close of business on ...",
        "source": "The AES Corporation",
        "tickers": ["NYSE:AES"],
        "categories": ["Utilities", "Electrical Utilities", "Oil & Energy", "Dividends"],
        "keywords": ["The AES Corporation", "Utilities", "Electrical Utilities", "Oil & Energy", "Dividends"],
        "images": ["https://mmx.prnewswire.com/media/MS1228908/AES-New-Brand-Logo.jpg?id=OA2994869"],
        "searchQuery": null,
        "sourceUrl": null,
        "position": 26
    },
    {
        "releaseId": "302903872",
        "title": "VINCI COMPASS TO ANNOUNCE THIRD QUARTER 2026 RESULTS AND HOST CONFERENCE CALL AFTER MARKET CLOSE ON THURSDAY, NOVEMBER 12, 2026",
        "url": "https://www.prnewswire.com/news-releases/vinci-compass-to-announce-third-quarter-2026-results-and-host-conference-call-after-market-close-on-thursday-november-12-2026-302903872.html",
        "publishedAt": "2026-10-09T17:00:00-04:00",
        "dateLabel": "Oct 09, 2026, 17:00 ET",
        "summary": "Earnings Conference CallTo access the conference call please visit the Events section of the Company's website at:",
        "imageUrl": "https://mmx.prnewswire.com/media/MS1624054/Vinci-Compass-logo-Logo.jpg?id=OA2998411",
        "company": null,
        "companyNewsroomUrl": null,
        "modifiedAt": null,
        "description": null,
        "dateline": null,
        "bodyText": null,
        "source": null,
        "tickers": [],
        "categories": [],
        "keywords": [],
        "images": [],
        "searchQuery": "earnings",
        "sourceUrl": null,
        "position": 3
    }
]
```

### Use cases

- **Earnings and dividend tracking**: collect earnings dates, results, and dividend announcements with tickers for your watchlist.
- **Market and investment research**: feed press releases with tickers and categories into trading signals, sentiment models, or research notes.
- **Competitor and company monitoring**: schedule a company newsroom or keyword to catch new announcements as they are published.
- **PR and media monitoring**: track which companies publish about a topic, and when, for coverage reports or pitching.
- **Industry news feeds**: build a feed for one PR Newswire category, such as Mining or Financial Technology.
- **LLM and NLP datasets**: export full release text with dates and categories for summarization, classification, or retrieval.

### How it works

1. Each keyword becomes a PR Newswire news search, newest first. Pasted URLs are read as search results, category lists, or company newsrooms. With no input, the scraper reads PR Newswire's latest news list.
2. PR Newswire Scraper reads list pages a few at a time: 25 releases per search page and 100 per category or newsroom page. PR Newswire serves up to about 10,000 results for a search or a category list, the newest first.
3. With a date range, every release is checked against its list date. When the end date is in the past, the scraper finds the first page that reaches back to it (doubling, then halving the page number) and starts there. It stops once releases get older than the start date.
4. With **Include full release text** on, each release page is opened for the full text and metadata. Tickers are read from exchange and symbol pairs in the text, such as `(NYSE: AES)`.
5. Releases published in the same minute can swap places between news list pages, so one pass over a list misses about 1 to 2% of them. When a category list, the latest-news list, or a newsroom is read to its end or to your start date, the scraper re-reads the same stretch with other page sizes and adds the releases it missed (22 extra in a test day of 1,500 releases). Search results were stable in testing and are read once.
6. Releases that appear on more than one page are saved once per keyword or URL.

### How much does it cost to scrape PR Newswire?

PR Newswire Scraper uses pay-per-event pricing. You pay per press release saved to the dataset, with or without full text. Compute and proxy costs are included in the price, so there are no extra platform usage charges.

| Event | Free plan | Bronze | Silver | Gold |
|-------|-----------|--------|--------|------|
| `release-scraped`: per press release saved | $0.01499 | $0.01399 | $0.01299 | $0.01199 |
| Per 1,000 press releases | **$14.99** | **$13.99** | **$12.99** | **$11.99** |

For example, the prefilled run (20 releases) costs about $0.30 on the Free plan, and 1,000 releases cost $14.99. Use **Max releases per keyword or URL** or a [spending limit](https://docs.apify.com/platform/actors/running/usage-and-resources) to cap a run; the scraper stops as soon as the limit is reached and opens release pages only for releases it will save. Apify's Free plan includes monthly platform credits you can use to try the scraper.

### Use PR Newswire Scraper with the API

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("parsebird/pr-newswire-scraper").call(run_input={
    "keywords": ["earnings"],
    "dateFrom": "2026-10-01",
    "includeFullBody": True,
    "maxReleases": 200,
})
for release in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(release["publishedAt"], release["tickers"], release["title"])
```

**JavaScript**

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('parsebird/pr-newswire-scraper').call({
    startUrls: ['https://www.prnewswire.com/news-releases/financial-services-latest-news/dividends-list/'],
    includeFullBody: true,
    maxReleases: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const r of items) console.log(r.publishedAt, r.company, r.tickers.join(', '));
```

See the [API tab](https://apify.com/parsebird/pr-newswire-scraper/api) for all endpoints and the [Apify API client docs](https://docs.apify.com/api/client/python) for more options.

### Is it legal to scrape PR Newswire?

PR Newswire Scraper only reads press releases that PR Newswire publishes openly to logged-out visitors. It does not log in. Press releases are written to be distributed, but the text and images still belong to the issuing companies and PR Newswire, so check their terms before republishing them. Releases often name media contacts; if you process personal data, make sure you have a lawful basis under GDPR, CCPA, or other laws that apply to you, and consult a lawyer if in doubt. Read more in Apify's post [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

### Other finance and news scrapers

- [Yahoo Finance Scraper](https://apify.com/parsebird/yahoo-finance-scraper): quotes, fundamentals, options, and news for the tickers you find in press releases.
- [SEC Insider Scraper](https://apify.com/parsebird/sec-insider-scraper): SEC Form 4 insider buys and sells.
- [Congress Stock Trades & Financial Disclosures](https://apify.com/parsebird/congress-stock-trades-scraper): U.S. Congress members' stock trades.
- [Stocktwits Sentiment Scraper](https://apify.com/parsebird/stocktwits-sentiment-scraper): trending tickers and bullish or bearish chatter.
- [Startpage News Scraper](https://apify.com/parsebird/startpage-news-scraper): news headlines from many publishers for any query.
- [RSS Feed Extractor](https://apify.com/parsebird/rss-feed-extractor): turn any RSS or Atom feed into structured JSON.
- [Owler Company Scraper](https://apify.com/parsebird/owler-company-scraper): company profiles, competitors, and funding.

### FAQ

**Do I need a PR Newswire account?**
No. PR Newswire Scraper reads public press releases without logging in.

**How many press releases can I get?**
PR Newswire serves up to about 10,000 results for one search (9,975 in testing) and 10,000 for one category list or the latest-news list. Results are newest first, so for a busy keyword such as `earnings` that window went back to November 2025 in testing, and the latest-news list covered about two weeks. To go further back, use narrower keywords, category lists, or company newsrooms.

**Do the date filters need full release text?**
No. Every list entry carries its publication date, so date filtering works with **Include full release text** off. Dates are compared in US Eastern Time, the time zone PR Newswire shows.

**What happens if my date range is older than PR Newswire lists?**
The scraper logs that the search or list has no releases on or before your end date within the 10,000 results PR Newswire serves, and moves on.

**How are tickers found?**
From exchange and symbol pairs in the release text, such as `(NYSE: AES)`, `(Nasdaq: MAR)`, or `(TSX: VZLA)`, written as `EXCHANGE:SYMBOL`. Releases from private companies have no tickers. A ticker mentioned without an exchange prefix is not picked up.

**Why does the summary look different for keyword searches?**
PR Newswire's search shows the passage of the release that matches your keyword, while news lists show the release's opening lines. Turn on full release text to also get the standard `description` and the full `bodyText`.

**Are email addresses in the release text?**
No. PR Newswire hides email addresses in its pages, so they appear as `[email protected]` in `bodyText`.

**Which URLs can I paste?**
News searches (`/search/news/?keyword=...`), the latest-news list (`/news-releases/` or `/news-releases/news-releases-list/`), category pages and lists (`/news-releases/...-latest-news/` and `/news-releases/.../...-list/`), company newsrooms (`/news/COMPANY/`), and single release pages ending in a release ID (`...-302903571.html`).

**Do I need a proxy?**
Usually not. All test runs on the Apify platform worked without a proxy. If PR Newswire refuses requests, the scraper switches to Apify Proxy by itself. Set a proxy only if you want to force one for every request.

**Can I schedule runs or connect the results to other tools?**
Yes. Use [Apify schedules](https://docs.apify.com/platform/schedules) for recurring runs (through the API, `dateFrom` also accepts relative values such as `"1 day"`, handy for daily schedules), and [integrations](https://apify.com/integrations) to send results to Google Sheets, Slack, Zapier, Make, or a webhook. Results are also available through the [API](https://apify.com/parsebird/pr-newswire-scraper/api).

**Something doesn't work. What should I do?**
Open an issue on the [Issues tab](https://apify.com/parsebird/pr-newswire-scraper/issues) with your input and run link.

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/pr-newswire-scraper/changelog.md

# Actor input Schema

## `keywords` (type: `array`):

Enter words to search PR Newswire for, one per line, e.g. <code>earnings</code>, <code>IPO</code>, <code>Microsoft</code>. Each keyword runs as its own search, newest releases first. Leave empty (and add no URLs) to get the latest releases.

## `startUrls` (type: `array`):

Paste PR Newswire URLs: a search (<code>https://www.prnewswire.com/search/news/?keyword=ai</code>), a news category (<code>https://www.prnewswire.com/news-releases/financial-services-latest-news/dividends-list/</code>), a company newsroom (<code>https://www.prnewswire.com/news/leidos/</code>), or single release pages.

## `dateFrom` (type: `string`):

Keep releases published on or after this date (US Eastern Time, as shown on PR Newswire). Works with or without full release text.

## `dateTo` (type: `string`):

Keep releases published on or before this date (US Eastern Time). The Actor jumps straight to that date instead of paging through newer releases. PR Newswire only lists the newest 10,000 results per search or category.

## `includeFullBody` (type: `boolean`):

Open each release to add the full text, company, dateline, stock tickers, categories, all images, and last-modified time. Slower than list data only; the price per release is the same.

## `maxReleases` (type: `integer`):

Stop after this many releases for each keyword or URL. Set 0 for no limit (PR Newswire lists up to 10,000 results per search or category).

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

Optional. Leave as is unless you need a specific proxy.

## Actor input object example

```json
{
  "keywords": [
    "earnings"
  ],
  "includeFullBody": false,
  "maxReleases": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "keywords": [
        "earnings"
    ],
    "maxReleases": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/pr-newswire-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 = {
    "keywords": ["earnings"],
    "maxReleases": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/pr-newswire-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 '{
  "keywords": [
    "earnings"
  ],
  "maxReleases": 20
}' |
apify call parsebird/pr-newswire-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/pr-newswire-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/9MryTyXyaQKx9ip94/builds/Gw703VFcEpsfBJsp8/openapi.json
