# Press Release Sales Intelligence — Funding, M\&A & Leads (`lokki/press-release-intelligence-scraper`) Actor

Find and rank revenue opportunities from five press-release sources. Transparent no-AI scoring adds timing, confidence, business needs, buyer roles, contacts, and proof URLs.

- **URL**: https://apify.com/lokki/press-release-intelligence-scraper.md
- **Developed by:** [Ian Dikhtiar](https://apify.com/lokki) (community)
- **Categories:** News, SEO tools, Other
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Press Release Intelligence Scraper — PR Newswire & GlobeNewswire Leads

Turn fresh press releases into sales, investor, PR, and competitive-intelligence signals.

This Actor monitors press releases from PR Newswire, GlobeNewswire, paginated newswire listing pages, RSS feeds, and direct release URLs. Instead of dumping raw headlines, it returns clean, spreadsheet-ready rows with company names, event labels, tickers, contact details, sentiment, and source links.

### Why use this Actor?

Press releases are one of the fastest public signals for:

- **M\&A and divestitures** — catch acquisitions, sales, mergers, and strategic transactions.
- **Funding and growth signals** — find companies announcing financing, expansion, partnerships, and launches.
- **B2B sales triggers** — build warm outreach lists from companies announcing new budgets, products, contracts, or executive moves.
- **Investor monitoring** — track public-company announcements by source, topic, ticker, and date.
- **PR and comms intelligence** — monitor competitor announcements and media contact details.
- **AI/news pipelines** — feed clean press-release rows into agents, CRMs, dashboards, Sheets, or vector workflows.

### What you get

Each result can include:

- Press release title, summary, URL, source, and publication date
- Company / issuer name
- Business event labels such as `merger_acquisition`, `funding`, `earnings`, `partnership`, `product_launch`, `executive_hire`, `customer_win`, and `expansion`
- Stock tickers when visible in the release
- Media / investor-relations emails and phone numbers when full text is enabled
- Sentiment and signal score for prioritization
- Matched keywords for alert workflows
- Full release body text when enrichment is enabled

### Bulk collection, not just 20 RSS rows

Many newswire RSS feeds expose only the latest ~20 releases. This Actor can go deeper by using paginated listing pages.

Example: PR Newswire listing pages can be expanded with `maxPagesPerSource`, letting you collect hundreds of releases in one run.

A tested cloud run produced **300 rows** from paginated PR Newswire listings with full-text enrichment disabled.

### Best use cases

#### Sales teams

Find companies that just announced funding, partnerships, product launches, acquisitions, contracts, or leadership changes. Use the release as outreach context while the event is still fresh.

#### Investors and analysts

Monitor public-company announcements and classify events into actionable buckets instead of reading a wall of headlines.

#### PR agencies and brand teams

Track competitors, clients, industries, and campaigns across major wire services.

#### Automation builders

Send rows to Google Sheets, HubSpot, Airtable, n8n, Zapier, Notion, Slack alerts, or AI agents via the Apify API.

### Example input

Collect up to 300 recent releases from paginated PR Newswire pages:

```json
{
  "queries": [],
  "maxReleases": 300,
  "sinceHours": 720,
  "includeFullText": false,
  "maxPagesPerSource": 15
}
```

Monitor acquisitions from a GlobeNewswire M\&A feed:

```json
{
  "sources": [
    "https://www.globenewswire.com/RssFeed/subjectcode/27-Mergers%20and%20Acquisitions/feedTitle/GlobeNewswire%20-%20Mergers%20and%20Acquisitions"
  ],
  "queries": ["acquisition"],
  "maxReleases": 100,
  "includeFullText": true
}
```

### Input options

| Field | What it does |
|---|---|
| `queries` | Keywords, companies, tickers, or topics to match. Leave empty to collect everything. |
| `sources` | RSS feeds, paginated listing pages, or direct press release URLs. Defaults include PR Newswire and GlobeNewswire sources. |
| `maxReleases` | Maximum number of dataset rows to return. |
| `sinceHours` | Freshness window. Use `720` for roughly 30 days. |
| `includeFullText` | Fetch full release pages for body text, contacts, and stronger classification. Disable for cheap bulk headline collection. |
| `maxPagesPerSource` | Number of PR Newswire listing pages or GlobeNewswire RSS directory feeds to expand. |
| `maxCandidates` | Safety cap on unique releases inspected before keyword filtering. Defaults to 500 to prevent runaway broad searches. |
| `classifyEvents` | Add business-event labels. |
| `extractContacts` | Extract visible media / IR emails and phone numbers. |

### Example output

```json
{
  "sourceName": "GlobeNewswire",
  "title": "Nexans completes the sale of Autoelectric to Motherson",
  "url": "https://www.globenewswire.com/news-release/...",
  "publishedAt": "2026-07-03T13:05:05.000Z",
  "companyName": "Nexans",
  "eventTypes": ["merger_acquisition"],
  "sentiment": "neutral",
  "signalScore": 100,
  "contacts": {
    "emails": ["audrey.bourgeois@nexans.com"],
    "phones": []
  },
  "intelligence": {
    "hasContact": true,
    "isHighSignal": true,
    "matchedQueries": []
  }
}
```

### Cost and speed

- **Headline mode** (`includeFullText: false`) is fastest and cheapest. Best for collecting hundreds of rows.
- **Full-text mode** (`includeFullText: true`) fetches each release page and extracts body text / contacts. Best for smaller, higher-value runs.
- Source and detail fetches use bounded concurrency; duplicate URLs are removed before enrichment to avoid wasted runtime.
- For large runs, collect headlines first, then re-run enrichment on only the best signals.

### Current sources

- PR Newswire RSS and paginated listing pages
- GlobeNewswire RSS feeds and RSS directory expansion
- Direct PR Newswire / GlobeNewswire release URLs
- Custom RSS/XML feeds and compatible listing pages

### Limitations

- RSS feeds may expose only the latest ~20 releases; use paginated listing pages for bulk collection.
- Business Wire, Accesswire, EIN Presswire, and PRWeb adapters are planned but not yet fully tested.
- Event classification is rules-based. It is optimized for speed and cost, not legal/investment-grade interpretation.
- Contact extraction only returns information visible in the release text.
- Source websites can change structure; use small scheduled checks for critical workflows.

### Common workflows

- Daily acquisition tracker
- Funding announcement lead list
- Public-company announcement monitor
- Competitor launch tracker
- PR campaign archive
- Press release feed for AI agents or dashboards

### Support

If a source changes or you need another wire service added, open an issue or contact the Actor maintainer with the source URL and example output you need.

# Actor input Schema

## `queries` (type: `array`):

Optional filter terms. Matching is applied against title, summary, body, companies, tickers, and event labels.

## `sources` (type: `array`):

Newswire feeds, listing pages, RSS/XML feeds, or direct press release URLs. Leave empty to use default PR Newswire + GlobeNewswire feeds.

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

Hard cap on pushed release rows.

## `sinceHours` (type: `integer`):

Only keep releases newer than this window when a published date is available. Set 0 to disable.

## `includeFullText` (type: `boolean`):

Fetch detail pages and extract body/contact/enrichment fields. Disable for cheaper headline-only monitoring.

## `dedupeMode` (type: `string`):

How duplicate releases are suppressed.

## `classifyEvents` (type: `boolean`):

Adds event labels such as funding, M\&A, earnings, partnership, product launch, executive hire, legal/compliance, and customer win.

## `extractContacts` (type: `boolean`):

Extract visible emails, phone numbers, and contact names from releases.

## `maxPagesPerSource` (type: `integer`):

For PR Newswire listing URLs, paginate ?page=1..N. For GlobeNewswire RSS directory, use up to N RSS feeds.

## `maxCandidates` (type: `integer`):

Safety cap on unique candidate releases fetched and enriched before query filtering. Prevents long-running broad searches.

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

Optional Apify proxy configuration. Usually not needed for RSS-first runs.

## Actor input object example

```json
{
  "queries": [
    "acquisition",
    "funding",
    "AI",
    "NASDAQ:AAPL"
  ],
  "sources": [
    "https://www.prnewswire.com/news-releases/news-releases-list/",
    "https://www.prnewswire.com/news-releases/financial-services-latest-news/acquisitions-mergers-and-takeovers-list/",
    "https://www.prnewswire.com/news-releases/business-technology-latest-news/business-technology-latest-news-list/",
    "https://www.prnewswire.com/news-releases/health-latest-news/health-latest-news-list/",
    "https://www.globenewswire.com/RssFeed/orgclass/1/feedTitle/GlobeNewswire%20-%20News%20about%20Public%20Companies",
    "https://www.globenewswire.com/RssFeed/subjectcode/27-Mergers%20and%20Acquisitions/feedTitle/GlobeNewswire%20-%20Mergers%20and%20Acquisitions",
    "https://www.globenewswire.com/rss/list"
  ],
  "maxReleases": 100,
  "sinceHours": 168,
  "includeFullText": true,
  "dedupeMode": "url_title_hash",
  "classifyEvents": true,
  "extractContacts": true,
  "maxPagesPerSource": 15,
  "maxCandidates": 500,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "queries": [
        "acquisition",
        "funding",
        "AI",
        "NASDAQ:AAPL"
    ],
    "sources": [
        "https://www.prnewswire.com/news-releases/news-releases-list/",
        "https://www.prnewswire.com/news-releases/financial-services-latest-news/acquisitions-mergers-and-takeovers-list/",
        "https://www.prnewswire.com/news-releases/business-technology-latest-news/business-technology-latest-news-list/",
        "https://www.prnewswire.com/news-releases/health-latest-news/health-latest-news-list/",
        "https://www.globenewswire.com/RssFeed/orgclass/1/feedTitle/GlobeNewswire%20-%20News%20about%20Public%20Companies",
        "https://www.globenewswire.com/RssFeed/subjectcode/27-Mergers%20and%20Acquisitions/feedTitle/GlobeNewswire%20-%20Mergers%20and%20Acquisitions",
        "https://www.globenewswire.com/rss/list"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lokki/press-release-intelligence-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 = {
    "queries": [
        "acquisition",
        "funding",
        "AI",
        "NASDAQ:AAPL",
    ],
    "sources": [
        "https://www.prnewswire.com/news-releases/news-releases-list/",
        "https://www.prnewswire.com/news-releases/financial-services-latest-news/acquisitions-mergers-and-takeovers-list/",
        "https://www.prnewswire.com/news-releases/business-technology-latest-news/business-technology-latest-news-list/",
        "https://www.prnewswire.com/news-releases/health-latest-news/health-latest-news-list/",
        "https://www.globenewswire.com/RssFeed/orgclass/1/feedTitle/GlobeNewswire%20-%20News%20about%20Public%20Companies",
        "https://www.globenewswire.com/RssFeed/subjectcode/27-Mergers%20and%20Acquisitions/feedTitle/GlobeNewswire%20-%20Mergers%20and%20Acquisitions",
        "https://www.globenewswire.com/rss/list",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("lokki/press-release-intelligence-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 '{
  "queries": [
    "acquisition",
    "funding",
    "AI",
    "NASDAQ:AAPL"
  ],
  "sources": [
    "https://www.prnewswire.com/news-releases/news-releases-list/",
    "https://www.prnewswire.com/news-releases/financial-services-latest-news/acquisitions-mergers-and-takeovers-list/",
    "https://www.prnewswire.com/news-releases/business-technology-latest-news/business-technology-latest-news-list/",
    "https://www.prnewswire.com/news-releases/health-latest-news/health-latest-news-list/",
    "https://www.globenewswire.com/RssFeed/orgclass/1/feedTitle/GlobeNewswire%20-%20News%20about%20Public%20Companies",
    "https://www.globenewswire.com/RssFeed/subjectcode/27-Mergers%20and%20Acquisitions/feedTitle/GlobeNewswire%20-%20Mergers%20and%20Acquisitions",
    "https://www.globenewswire.com/rss/list"
  ]
}' |
apify call lokki/press-release-intelligence-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/R4YRi6mTFHxGRBJSm/builds/7RQ3dcFJSBjDnPNGR/openapi.json
