# Endpoints News Scraper (`acquistion-automation/endpoints-news-scraper`) Actor

Scrapes Endpoints News articles by keyword or category feed. Returns each article's title, summary, URL, and publication date as a flat row.

- **URL**: https://apify.com/acquistion-automation/endpoints-news-scraper.md
- **Developed by:** [Acquisition Automation Co.](https://apify.com/acquistion-automation) (community)
- **Categories:** News, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.50 / 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/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

![Acquisition Automation Co. Search less. Close more.](https://api.apify.com/v2/key-value-stores/AOdPHdOpeDpzEPS5f/records/banner.jpg)

## 💊 Endpoints News Scraper

> **Export biopharma trade coverage as flat rows: headline, author, summary, category, tags, publication date and the article link.** Filter by keyword or by one of eight category feeds, including deals, FDA and earnings. No API key, no account, no login.

Endpoints News covers the money side of biotech and pharma: acquisitions, licensing, FDA decisions, plant closures, layoffs and earnings. It reads well and exports badly. There is no download, no bulk view, and a keyword search hands back a page you have to read one item at a time. This Actor reads the feeds for you and writes each article into a dataset you can sort, filter and hand to an analyst.

| Who uses it | What they use the coverage for |
|---|---|
| 🏥 Healthcare and life science investors | Watching the deals feed for who is buying, who is selling and at what stage |
| 🔬 Corporate development teams | Tracking a target's competitors, trial readouts and regulatory events before an LOI |
| 📊 Analysts covering pharma services | Spotting plant closures, layoffs and capacity moves that reprice a supplier |
| 📰 Newsletter and research writers | Building a searchable archive of headlines and summaries by keyword |

### 📋 What it does

> 💡 **Why it matters:** the deals feed is a list of counterparties. Pulled as rows, it becomes a pipeline you can filter by date and keyword instead of a page you scroll.

- 🔎 **Filters by keyword.** The term is matched against both the headline and the summary, so a company name catches articles that never made it into a title.
- 📂 **Eight category feeds.** `all`, `regulatory`, `manufacturing`, `fda`, `deals`, `rd`, `clinical` and `earnings`.
- 📝 **Returns the summary, not just the link.** Enough of the opening to judge whether the article matters without opening it.
- 🏷 **Carries the article's own tags**, for example `Pharma, Manufacturing`, so one run can be split into several topic lists.
- ✍️ **Names the reporter**, which is how you find the person covering your sector.
- 💾 **Exports to CSV, Excel, JSON or XML**, from the run page or the API.

### 📊 Output

Every article is one flat row. 9 fields, the same in every category.

| Field | Type | Description |
|---|---|---|
| 📰 `title` | string | Article headline |
| ✍️ `author` | string | Reporter credited on the article |
| 📅 `publishDate` | string | Publication date and time as the feed publishes it, for example `Mon, 14 Sep 2026 15:57:28 +0000` |
| 📂 `category` | string | Category the article is filed under, for example `Pharma` or `R&D` |
| 📝 `summary` | string | Opening of the article, truncated by the feed |
| 🔗 `url` | string | Link to the full article on `endpoints.news` |
| 🏷 `tags` | string | The article's tags as one comma-separated string |
| 🕒 `scrapedAt` | string | ISO timestamp of collection |
| ⚠️ `error` | string | `null` on a normal row |

#### Example rows

```json
{
  "title": "GSK to wind down German vaccine factory due to lack of demand",
  "author": "Anna Brown",
  "publishDate": "Mon, 14 Sep 2026 15:57:28 +0000",
  "category": "Pharma",
  "summary": "GSK is closing a factory in Germany and laying off about 650 workers as demand for egg-based flu vaccines declines, a spokesperson told Endpoints News. The site closure comes after a “rigorous review” of two ...",
  "url": "https://endpoints.news/gsk-to-wind-down-german-vaccine-factory-due-to-lack-of-demand/",
  "tags": "Pharma, Manufacturing",
  "scrapedAt": "2026-09-14T17:19:15.521Z",
  "error": null
}
```

```json
{
  "title": "GSK heads to FDA with recently acquired drug from Nuvalent",
  "author": "Lei Lei Wu",
  "publishDate": "Mon, 14 Sep 2026 15:21:55 +0000",
  "category": "R&D",
  "summary": "GSK’s Jideytro posted an impressive response rate of 94% in a first-line treatment for ROS1-positive non-small cell lung cancer patients, according to results shared at the World Conference on Lung Cancer over the weekend. GSK ...",
  "url": "https://endpoints.news/gsk-heads-to-fda-with-recently-acquired-drug-from-nuvalent/",
  "tags": "R&D",
  "scrapedAt": "2026-09-14T17:19:15.640Z",
  "error": null
}
```

### ✨ Why choose this Actor

| | What you get |
|---|---|
| **The trade press, as data** | Headlines and summaries in rows, not in a browser tab you have to keep open. |
| **No credentials** | The category feeds are public. No key, no account, no login. |
| **Keyword across title and summary** | A company name is caught even when the headline does not carry it. |
| **The same 9 fields every run** | Append daily runs into one archive without cleaning columns. |
| **You pay per row** | No subscription. A keyword that matches nothing costs nothing. |

### 🚀 How to use it

1. [Create a free Apify account](https://console.apify.com/sign-up). New accounts start with $5 of credit.
2. Open the Actor and select **Try for free**.
3. Pick a `category`, or leave it on `all`.
4. Add a `keyword` if you are tracking a company or a molecule, and set `maxItems` to cap the run.
5. Select **Start**, then export from the **Dataset** tab as CSV, Excel, JSON or XML.

A first run:

```json
{
  "maxItems": 10,
  "category": "all"
}
```

Watching one company across the deals feed:

```json
{
  "keyword": "GSK",
  "category": "deals",
  "maxItems": 200
}
```

### ⚙️ Input

| Field | Required | Description |
|---|---|---|
| `keyword` | No | Substring matched against the article title and summary. Empty returns everything in the feed |
| `category` | No | One of `all`, `regulatory`, `manufacturing`, `fda`, `deals`, `rd`, `clinical`, `earnings`. Default `all` |
| `maxItems` | No | How many articles to collect per run. Free plan is capped at 10 |

### 💰 Pricing

Pay per result. No subscription, and no Apify platform usage on top.

| Apify plan | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| Per article row | $0.0085 | $0.00817 | $0.00783 | $0.0075 | $0.0075 | $0.0075 |

| Rows collected | Cost on the Free plan |
|---|---|
| 100 | $0.85 |
| 1,000 | $8.50 |
| 10,000 | $85.00 |

**Free plan runs** return up to 10 rows as a preview. Any paid Apify plan lifts that to 1,000,000 per run.

### 🔌 Integrate with any app

The dataset is available through the Apify API as soon as the run finishes. Use `run-sync-get-dataset-items` for a one-shot call, webhooks to push new articles into Slack or a sheet, or the Make, Zapier, Airbyte and LangChain integrations listed on the Actor page.

### 🤖 Use with an AI agent

Give an agent live access to the coverage over the Model Context Protocol:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=acquistion-automation/endpoints-news-scraper"
```

Then ask it in plain language what moved in the deals feed this week and read the result back.

### ❓ Frequently asked questions

**Do I get the full article text?**
No. A row carries the headline, the author, the summary the feed publishes, the tags and the link. Open `url` for the article itself.

**Why is `summary` cut off with three dots?**
That is how the feed publishes it. The Actor does not shorten it further.

**What is the difference between `category` and `tags`?**
`category` is the single feed the article is filed under. `tags` is the article's own topic list, which often names more than one.

**Can I search a company name that is not in the headline?**
Yes. The keyword is matched against the summary as well, which catches articles where the company appears in the first paragraph.

**How far back does a run go?**
Each run reads the feed from the newest article backwards until it hits `maxItems`. Run it on a schedule to build an archive over time.

**What can I export?**
CSV, Excel, JSON and XML from the run page, or JSON straight from the API.

### 🔗 More from Acquisition Automation Co.

- [DrugBank Open Data Scraper](https://apify.com/acquistion-automation/drugbank-open-scraper)
- [SAM.gov Contract Opportunities Scraper](https://apify.com/acquistion-automation/sam-gov-contracts-scraper)
- [IRS Exempt Organizations Scraper](https://apify.com/acquistion-automation/irs-eo-master-file-scraper)
- [404 Media Articles Scraper](https://apify.com/acquistion-automation/404media-articles-scraper)
- [BizBuySell Scraper](https://apify.com/acquistion-automation/bizbuysell-scraper)

### About Acquisition Automation Co.

We build automation for people buying businesses. The repetitive part of an acquisition search, checking listings, pulling public records, tracking owners and assets, is work a machine should do, so the buyer's time goes into judging deals instead of collecting them.

We add new Actors regularly. If there is a source you need and do not see here, tell us.

### 🆘 Support

Open an issue in the **Issues** tab of this Actor with your run ID, the input you used, and what you expected to get back.

### ⚠️ Disclaimer

This Actor is independent and is not affiliated with, endorsed by, or sponsored by Endpoints News. It collects only publicly available data. Article text remains the property of its publisher. You are responsible for using that data in compliance with the source's terms of service and applicable law.

# Actor input Schema

## `keyword` (type: `string`):

Substring filter against article title and summary.

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

Free users limited to 10 items. Paid users up to 1,000,000.

## `category` (type: `string`):

Filter by Endpoints category feed.

## Actor input object example

```json
{
  "maxItems": 10,
  "category": "all"
}
```

# Actor output Schema

## `results` (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 = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("acquistion-automation/endpoints-news-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 }

# Run the Actor and wait for it to finish
run = client.actor("acquistion-automation/endpoints-news-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 '{
  "maxItems": 10
}' |
apify call acquistion-automation/endpoints-news-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,acquistion-automation/endpoints-news-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/gOe3O9jifvibTrgu1/builds/6wlbMCsdITUJKttCj/openapi.json
