# PR Newswire Scraper: Press Releases, Companies & Contacts (`steadyrows/prnewswire-releases`) Actor

Press releases from prnewswire.com by keyword, industry, subject, company or feed: full text, source, media contact e-mails and phones, tickers, links, images and tags. Public pages only, no proxy.

- **URL**: https://apify.com/steadyrows/prnewswire-releases.md
- **Developed by:** [SteadyRows](https://apify.com/steadyrows) (community)
- **Categories:** News, Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 release with details

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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: press releases, companies and contacts

Get structured data from [PR Newswire](https://www.prnewswire.com), the largest press-release wire: search by **keyword**, list an **industry** or **subject** (funding rounds, mergers, personnel changes, product launches, earnings…), follow a **company's** releases, walk the **site-wide feed**, or paste any prnewswire.com page, and get one clean row per release with the full text, the issuing company, **media contact e-mails and phone numbers**, stock tickers, outbound links and images.

Built for news monitoring, lead generation (who just raised money, who just hired a CMO, which agency sent the release), competitor tracking, PR and investor-relations research, and feeding press releases into search indexes or language models.

### What you get

**One row per release** (every row has the same keys, `null` when the site has no value):

| Field | Example |
|---|---|
| `id`, `url`, `title` | `302900251`, https://www.prnewswire.com/news-releases/sante-raises-15m-series-a-…-302900251.html, "Santé Raises $15M Series A to Expand…" |
| `summary` | the site's own one-paragraph description |
| `publishedAt`, `publishedDate`, `publishedAtText` | `2026-10-06T19:20:00.000Z` (US Eastern time converted to UTC), `2026-10-06`, "Oct 06, 2026, 15:20 ET" |
| `language` | `en-US`, `de`, `es`, `fr`, `zh-hant`… as the site tags it |
| `organization`, `organizationUrl` | the company that issued the release and its page on the site |
| `imageUrl`, `mediaType` | the release's photo, video thumbnail or logo; `photo` / `video` / `logo` |
| `subtitle` | the subheadline shown under the title |
| `datelineCity`, `datelineDate` | "NEW YORK", "Oct. 6, 2026" |
| `text`, `bodyHtml` | the full release as plain text (paragraphs separated by blank lines) and as clean HTML with real outbound links |
| `source` | the "SOURCE …" line at the end of the release |
| `emails[]`, `phones[]`, `contactText` | media / investor contact e-mails (decoded from the site's obfuscation), phone numbers found in the contact block, and the contact block itself |
| `tickers[]` | `[{ "symbol": "RHHBY", "exchange": "OTCQX" }]` for every ticker the release links |
| `links[]` | outbound links in the text, with the site's click tracker removed (company website, product pages, registration links) |
| `images[]`, `videoUrls[]` | multimedia in the release |
| `industryCodes[]`, `subjectCodes[]` | the wire's classification codes as printed in the page, e.g. `["FNT", "FIN"]` and `["VEN", "PDT"]` on a funding-round release, `["PDT", "TDS"]` on a trade-show product launch |
| `industries[]`, `subjects[]` | the same codes with their names (`{"code": "VEN", "name": "Venture Capital"}`), from the wire's own code table; `name` is null for a code the table has not seen |
| `companies[]`, `storyId`, `newsItemId`, `transmissionId` | the wire's own identifiers |
| `relatedReleases[]`, `translations[]` | "Also from this source" releases; the same release in other languages or regions |
| `query`, `section`, `organizationSlug`, `listUrl`, `position` | where the release was found and its rank there |
| `detailsFetched` | whether the release page was opened for this row |

Only public information is collected: everything above is on the public release page, and media contacts are published by the issuer to be contacted.

### Input

```json
{
  "searchQueries": ["series A funding", "FDA approval"],
  "industries": [{"code": "ALC", "name": "Beers, Wines and Spirits"}, {"code": "BEV", "name": "Beverages"}, {"code": "AFI", "name": "Artificial Intelligence"}, {"code": "FNT", "name": "Financial Technology"}, {"code": "FIN", "name": "Banking & Financial Services"}, {"code": "CPR", "name": "Computer & Electronics"}],
  "subjects": [{"code": "VEN", "name": "Venture Capital"}, {"code": "PDT", "name": "New Products & Services"}],
  "organizations": ["https://www.prnewswire.com/news/roche/", "nvidia"],
  "feed": "none",
  "listUrls": ["https://www.prnewswire.com/news-releases/consumer-technology-latest-news/artificial-intelligence-list/"],
  "releaseUrls": ["https://www.prnewswire.com/news-releases/example-302900437.html"],
  "publishedAfter": "7 days",
  "languages": ["en"],
  "maxReleases": 100,
  "includeDetails": true
}
```

- **searchQueries** run the site's own search, newest release first. Multi-word queries match releases containing the words.
- **industries** are the 16 sections: `automotive-transportation`, `business-technology`, `entertainment-media`, `financial-services`, `general-business`, `consumer-technology`, `energy`, `environment`, `heavy-industry-manufacturing`, `telecommunications`, `consumer-products-retail`, `health`, `sports`, `travel`, `policy-public-interest`, `multicultural`. Names ("Health") and section URLs work too.
- **subjects** are the ~200 subject lists under those sections (see the list below). A slug alone picks the first section that has it; `industry/subject` picks a specific one; the list's URL always works.
- **organizations** are company pages (`https://www.prnewswire.com/news/roche/`) or their slugs.
- **feed** walks the site-wide list: `all` (every release, ~1,000 a day), `english`, or `public-company`. With **publishedAfter** `1 day` and a scheduled run this is a complete daily feed.
- **listUrls** take any list, search, subject, company or release page copied from the site.
- **publishedAfter** accepts a date (`2026-10-01`) or `1 day`, `2 weeks`, `1 month`. Every list is newest first, so the actor stops as soon as it reaches older releases and a daily run costs only what is new.
- **languages** keeps only the given language codes (`en` also matches `en-US`).
- **maxReleases** applies per query, section, company, feed or URL. A release found under several sources is delivered once.
- **includeDetails** off: list fields only (title, summary, time, language, thumbnail, and the company on search results), several times faster and cheaper.

#### Subject slugs

Auto & Transportation: aerospace-defense, air-freight, airlines-aviation, automotive, maritime-shipbuilding, railroads-and-intermodal-transportation, supply-chain-logistics, transportation-trucking-railroad, travel, trucking-and-road-transportation.
Business Technology: blockchain, broadcast-tech, computer-electronics, computer-hardware, computer-software, data-analytics, electronic-commerce, electronic-components, electronic-design-automation, financial-technology, high-tech-security, internet-technology, nanotechnology, networks, peripherals, semiconductors.
Entertainment & Media: advertising, art, books, entertainment, film-and-motion-picture, magazines, music, publishing-information-services, radio, television.
Financial Services & Investing: accounting-news-issues, acquisitions-mergers-and-takeovers, banking-financial-services, bankruptcy, bond-stock-ratings, conference-call-announcements, contracts, cryptocurrency, dividends, earnings, earnings-forecasts-projections, financing-agreements, insurance, investment-opinions, joint-ventures, mutual-funds, private-placement, real-estate, restructuring-recapitalization, sales-reports, shareholder-activism, shareholder-meetings, stock-offering, stock-split, venture-capital.
General Business: awards, commercial-real-estate, corporate-expansion, earnings, environmental-social-governance, human-resource-workforce-management, licensing, new-products-services, obituaries, outsourcing-businesses, overseas-real-estate, personnel-announcements, real-estate-transactions, residential-real-estate, small-business-services, socially-responsible-investing, surveys-polls-and-research, trade-show-news.
Consumer Technology: artificial-intelligence, blockchain, cloud-computing-internet-of-things, computer-electronics, computer-hardware, computer-software, consumer-electronics, cryptocurrency, data-analytics, electronic-commerce, electronic-gaming, financial-technology, mobile-entertainment, multimedia-internet, peripherals, social-media, science-tech-engineering-math, supply-chain-logistics, wireless-communications.
The remaining sections (energy, environment, heavy-industry-manufacturing, telecommunications, consumer-products-retail, health, sports, travel, policy-public-interest, multicultural) follow the same pattern; paste the list's URL from the site's "Trending Topics" page when in doubt, and the actor tells you the valid slugs when one is wrong.

### Output example

```json
{
  "id": "302900251",
  "url": "https://www.prnewswire.com/news-releases/sante-raises-15m-series-a-to-expand-the-first-ai-operating-system-for-wine--spirits-retail-302900251.html",
  "title": "Santé Raises $15M Series A to Expand the First AI Operating System for Wine & Spirits Retail",
  "summary": "Santé, a leading fintech and AI platform for the wine and spirits industry, today announced a $15 million Series A funding led by FINTOP…",
  "publishedAt": "2026-10-06T19:20:00.000Z",
  "publishedDate": "2026-10-06",
  "language": "en-US",
  "organization": "Santé",
  "organizationUrl": "https://www.prnewswire.com/news/sant%C3%A9/",
  "subtitle": "Powering nearly 1,000 stores and processing $2B in GMV, Santé introduces autonomous AI sales tools to drive retail revenue",
  "datelineCity": "NEW YORK",
  "datelineDate": "Oct. 6, 2026",
  "text": "NEW YORK, Oct. 6, 2026 /PRNewswire/ -- Santé, a leading fintech and AI platform…",
  "source": "Santé",
  "emails": ["riley@activate-pr.com"],
  "phones": [],
  "contactText": "Riley Munks\nPR Advisor\nActivate PR\nhttps://www.activate-pr.com/\nriley@activate-pr.com",
  "tickers": [],
  "links": ["https://www.santehq.com/", "https://www.activate-pr.com/"],
  "industryCodes": ["ALC", "BEV", "AFI", "FNT", "FIN", "CPR"],
  "subjectCodes": ["VEN", "PDT"],
  "industries": [{"code": "ALC", "name": "Alcoholic Beverages"}, {"code": "BEV", "name": "Beverages"}, {"code": "AFI", "name": "Agriculture, Food & Beverages"}, {"code": "FNT", "name": "Financial Technology"}, {"code": "FIN", "name": "Banking & Financial Services"}, {"code": "CPR", "name": "Computer Software"}],
  "subjects": [{"code": "VEN", "name": "Venture Capital"}, {"code": "PDT", "name": "New Products & Services"}],
  "query": "series A funding",
  "position": 1,
  "detailsFetched": true
}
```

### Limits worth knowing

- The site's search has no date filter; `publishedAfter` is applied by the actor, which stops reading as soon as a list reaches older releases.
- Search results list about 100 pages of 100; use a narrower query or a subject list for more.
- Phone numbers are read from the contact block at the end of the release, so a number quoted elsewhere in the text is not a contact. Some issuers publish no contact at all; `emails` is then `[]`.
- Industry and subject codes are the wire's internal codes. The page prints only the codes; `industries` and `subjects` add the names from the wire's own code table (built from the "Explore" links on release pages), so a rare code can come back with `name: null`.
- Company pages, like the lists, show each release once per language edition, so a bilingual issuer's page holds two rows for one announcement (`translations` links them).

### Pricing

Pay per result, no subscription:

| Event | Price |
|---|---|
| Release with details (page opened) | $2.00 per 1,000 |
| Release, list row only (`includeDetails: false`) | $0.80 per 1,000 |
| Run start | $0.002 |

1,000 releases with details take about 4 minutes; list rows alone a few seconds per 1,000.

### Reliability

- Public pages only, no login, no proxy. Requests are spaced out and run a few at a time; a rate-limit or bot-wall answer is retried with backoff and the whole run slows down instead of hammering the site.
- A release that is gone between the list and its page is delivered as a list row with a warning; if release pages stop answering altogether, the run continues with list rows (charged at the lower price) instead of failing.
- Rows are pushed as they are collected, so a run stopped early still delivers what it has.
- The site's time stamps are US Eastern; `publishedAt` is converted to UTC, including daylight-saving changes.

### Support

Open an issue on the Issues tab. Broken runs get fixed first.

# Actor input Schema

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

Keywords to search press releases for, e.g. `series A`, `acquisition`, `FDA approval`. Each query is one search, newest releases first.

## `industries` (type: `array`):

Industry sections to list, newest first: `automotive-transportation`, `business-technology`, `entertainment-media`, `financial-services`, `general-business`, `consumer-technology`, `energy`, `environment`, `heavy-industry-manufacturing`, `telecommunications`, `consumer-products-retail`, `health`, `sports`, `travel`, `policy-public-interest`, `multicultural`. The section's URL works too.

## `subjects` (type: `array`):

Subject lists, newest first, e.g. `venture-capital`, `acquisitions-mergers-and-takeovers`, `personnel-announcements`, `new-products-services`, `earnings`, `artificial-intelligence`, `clinical-trials`. Use `industry/subject` (e.g. `general-business/earnings`) when a subject exists under several industries, or paste the list's URL. The full list is in the README.

## `organizations` (type: `array`):

Company pages, newest release first: the page URL (`https://www.prnewswire.com/news/roche/`) or its slug (`roche`).

## `feed` (type: `string`):

Walk one of the site-wide lists, newest first. Combine with **Published after** and **Max releases** for a daily feed.

## `listUrls` (type: `array`):

Any list, search, subject, company or release page copied from prnewswire.com, e.g. `https://www.prnewswire.com/search/news/?keyword=funding`, `https://www.prnewswire.com/news-releases/financial-services-latest-news/venture-capital-list/`, `https://www.prnewswire.com/news/roche/`.

## `releaseUrls` (type: `array`):

Specific press releases, always opened for full details, e.g. `https://www.prnewswire.com/news-releases/example-302900437.html`.

## `publishedAfter` (type: `string`):

Only releases published on or after this date: `2026-10-01`, or relative like `1 day`, `2 weeks`. Lists are newest first, so the actor stops as soon as it reaches older releases.

## `languages` (type: `array`):

Keep only releases in these languages, by code as the site tags them: `en`, `de`, `es`, `fr`, `zh-hant`, … Empty = all languages.

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

Upper limit per query, section, company, feed or pasted URL. A release found under several sources is delivered once.

## `includeDetails` (type: `boolean`):

On: every release page is opened for the full text, subheadline, dateline, source, contact e-mails and phones, tickers, links, images, industry and subject codes, related releases and translations. Off: only the list fields (title, summary, time, language, thumbnail), faster and cheaper.

## Actor input object example

```json
{
  "searchQueries": [
    "series A funding"
  ],
  "industries": [],
  "subjects": [],
  "organizations": [],
  "feed": "none",
  "listUrls": [],
  "releaseUrls": [],
  "publishedAfter": "",
  "languages": [],
  "maxReleases": 100,
  "includeDetails": true
}
```

# Actor output Schema

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

All rows the run collected, one per item, in the default dataset.

# 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 = {
    "searchQueries": [
        "series A funding"
    ],
    "industries": [],
    "subjects": [],
    "organizations": [],
    "listUrls": [],
    "releaseUrls": [],
    "languages": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("steadyrows/prnewswire-releases").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 = {
    "searchQueries": ["series A funding"],
    "industries": [],
    "subjects": [],
    "organizations": [],
    "listUrls": [],
    "releaseUrls": [],
    "languages": [],
}

# Run the Actor and wait for it to finish
run = client.actor("steadyrows/prnewswire-releases").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 '{
  "searchQueries": [
    "series A funding"
  ],
  "industries": [],
  "subjects": [],
  "organizations": [],
  "listUrls": [],
  "releaseUrls": [],
  "languages": []
}' |
apify call steadyrows/prnewswire-releases --silent --output-dataset

```

## MCP server setup

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

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/lFJryacbg6hxXxhP3/builds/iIFitmfM6QC3udzj3/openapi.json
