# News Scraper API | Search News Articles | From $0.50/1K Pages (`curly/news-scraper-api`) Actor

News scraper API with paid plans from $0.50 per 1,000 successful pages. Page events are charged only for pages that load and parse successfully. Get headlines, URLs, publishers, publication times, snippets, and images with country, recency, and page-depth filters. Run via API or schedules.

- **URL**: https://apify.com/curly/news-scraper-api.md
- **Developed by:** [Curly](https://apify.com/curly) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 successful news result pages

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?

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

## News Scraper API | Search News Articles | From $0.50/1K Pages

Search recent news about companies, products, people, industries, or events and receive structured article results through Apify. Paid plans start at **$0.50 per 1,000 successfully loaded news pages**; Free-plan users pay **$0.70 per 1,000**. Beyond the small Actor-start fee, page events are charged only when a news page loads and parses successfully. Undelivered pages are not charged.

Each successful query returns ordered headlines, article URLs, publishers, relative publication times, snippets, and available images in one dataset item. Use the News Scraper API for news monitoring, competitor research, market intelligence, news aggregation workflows, AI agents, and alerts. Run it from the Apify Console or API, schedule recurring searches, trigger webhooks, and export reusable datasets without another news API key.

### Why use this news scraper?

- **Focused news results:** search for recent reporting without mixing the dataset with general web pages.
- **Low pay-per-page pricing:** paid plans start at $0.50 per 1,000 successfully loaded news pages; the Free-plan rate is $0.70 per 1,000.
- **Useful article metadata:** collect headlines, URLs, publishers, publication times, snippets, images, and result positions in a consistent structure.
- **Simple input:** submit one news query of up to 200 characters per run.
- **News monitoring workflows:** schedule recurring searches for companies, competitors, products, industries, or developing topics.
- **Automation ready:** call the Actor through Apify APIs and clients, connect webhooks and integrations, or export the dataset in supported formats.
- **No separate provider account:** use your Apify account without supplying another news API key, browser session, cookies, or proxy settings.

Need ranked web pages, sitelinks, and related searches instead of focused news results? Use Curly's [SERP API](https://apify.com/curly/simple-serp-api).

### How to use it

1. Enter one news query of up to 200 characters.
2. Click **Start**.
3. Open **Dataset** to inspect or download the results as JSON, CSV, Excel, XML, or another supported format.
4. Duplicate the run as a task or schedule it when you want recurring news monitoring.

```json
{
  "query": "OpenAI product announcements"
}
```

### Input

| Field | Required | What it does |
| --- | --- | --- |
| `query` | Yes | Searches recent news for one non empty term or phrase of up to 200 characters. |
| `country` | No | Optional country code to target results toward (for example `us`, `de`, `gb`). Results are limited by availability for the submitted query. |
| `time` | No | Optional recency window: `day`, `week`, `month`, or `year`. |
| `pages` | No | Optional result depth from 1 to 5. Each additional page loads more news results via the news feed's "More Results" control. |

The Actor accepts exactly one query per run and rejects undocumented input fields.

### What news data can you extract?

Each result can include:

- Its position in the returned result set
- The article headline and absolute URL
- The publisher or news outlet
- The relative publication time shown with the result
- A short article snippet when available
- An article image URL when available

Optional snippets and images remain `null` when they are unavailable. The Actor does not invent missing article details.

### Example output

Each successful query produces one dataset item:

```json
{
  "query": "OpenAI product announcements",
  "country": "us",
  "time": "week",
  "pages": 1,
  "results": [
    {
      "position": 1,
      "title": "OpenAI announces new platform features",
      "url": "https://example.com/news/openai-platform-features",
      "source": "Example News",
      "published": "3 hours ago",
      "snippet": "The company introduced new platform capabilities for developers and businesses.",
      "thumbnail": "https://example.com/images/openai-platform.jpg"
    },
    {
      "position": 2,
      "title": "Developers respond to the latest OpenAI release",
      "url": "https://example.org/technology/openai-release",
      "source": "Example Technology",
      "published": "1 day ago",
      "snippet": "Early users shared how the release could change existing AI workflows.",
      "thumbnail": null
    }
  ]
}
```

The `results` array preserves the returned order. A completed search with no available articles still stores a dataset item with an empty `results` array.

### Run through the API

Run the Actor synchronously and receive the stored dataset item:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/curly~news-scraper-api/run-sync-get-dataset-items?format=json" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"query":"OpenAI product announcements"}'
```

The same input works with the Apify API, JavaScript and Python clients, tasks, schedules, webhooks, and integrations. Never place a real Apify token in public code or client side applications.

### Common use cases

- Monitor competitor news and product announcements
- Track brand mentions in recent reporting
- Follow industry developments and market signals
- Build news aggregation and alerting workflows
- Collect sources for research briefs and internal reports
- Supply recent news context to AI agents and retrieval workflows
- Export structured news data to spreadsheets, databases, or dashboards
- Trigger downstream workflows when new coverage appears

### Pricing

Paid plans start at $0.50 per 1,000 successfully loaded news pages; the Free-plan rate is $0.70 per 1,000. Each run also has a small Actor-start charge: $0.0006 on paid plans or $0.001 on the Free plan.

Page events are charged only for news pages that load and parse successfully. A successfully parsed page is billable even when it contains no article listings. Pages that cannot be delivered because of an unavailable search, timeout, rate limit, or another operational failure are not charged. Individual articles inside the `results` array are never separate billing events.

Free-plan users can submit one accepted run every 12 hours. Paying Apify users are not subject to this product limit.

### Limitations

- Each run accepts one query of up to 200 characters.
- Result counts and article order can change as news coverage develops.
- Publication time is returned as relative text such as `3 hours ago`, not as a normalized timestamp.
- Snippets and images are optional and can be `null`.
- The Actor returns news result metadata, not the full article body.
- Country is a targeting hint only: result regional composition depends on availability for the submitted query and returned coverage.
- A completed query can return an empty `results` array when no suitable articles are available.

### Responsible use

You are responsible for using the Actor and its output in accordance with applicable laws, privacy requirements, copyright rules, contractual obligations, and website terms. Do not republish copyrighted article content without permission or use the results for spam, harassment, surveillance, or other unlawful purposes.

### FAQ

#### What is a news scraper API?

A news scraper API searches recent news and returns article metadata in a structured format that applications and automated workflows can consume. This Actor returns ordered headlines, URLs, publishers, relative publication times, snippets, and available images.

#### What does one run return?

One run returns one dataset item for the submitted query. The item contains the query and an ordered `results` array of available news articles.

#### How is this different from a SERP API?

This Actor focuses on recent news articles and publisher metadata. Curly's SERP API returns broader web search results, including ranked pages, domains, snippets, sitelinks, and related searches.

#### Do I need another news API key or account?

No. Use your Apify account and token when calling the Actor through the Apify API. No separate news provider credentials are required.

#### Can I use it for news monitoring?

Yes. Save a query as an Apify task, schedule recurring runs, and connect a webhook or integration to process newly returned coverage.

#### Can I build a news aggregation workflow with it?

Yes. Send structured results to a database, spreadsheet, dashboard, or application. Your workflow should deduplicate article URLs between runs when maintaining a continuous feed.

#### Does the output contain full article text?

No. The Actor returns result metadata and available snippets. It does not download or reproduce the full article body.

#### Can I target a country or recency window?

Yes. The optional `country` input targets results toward a region, and the optional `time` input filters to a recency window (`day`, `week`, `month`, or `year`). Result composition still depends on available coverage for the submitted query. Language targeting is not exposed as an input.

#### What happens when no news articles are found?

A valid, successfully parsed news page completes normally and stores one dataset item with an empty `results` array. That delivered page is billable. An unavailable or rate limited query does not create a dataset item or page charge.

#### How much does the News Scraper API cost?

Paid Apify plans start at $0.50 per 1,000 successfully loaded news pages, while the Free-plan rate is $0.70 per 1,000. The small Actor-start charge is $0.0006 on paid plans or $0.001 on the Free plan. Undelivered pages and individual article results do not create page charges.

#### Is there a Free-plan usage limit?

Yes. Free-plan users can submit one accepted run every 12 hours. Paying Apify users are not subject to this product limit.

#### Can I automate the News Scraper API?

Yes. Call it through Apify's REST API or official clients, save reusable tasks, schedule recurring searches, trigger webhooks, connect integrations, and export datasets in supported formats.

### Support

For questions, missing fields, or unexpected results, contact <hello@trycurly.xyz>.

# Actor input Schema

## `query` (type: `string`):

The company, product, person, industry, event, or topic to find recent news about. One query per run.

## `country` (type: `string`):

Target regional news results for a specific country.

## `time` (type: `string`):

Only show news from a recent window: the past day, week, month, or year.

## `pages` (type: `integer`):

How many result pages to request (1-5). More pages can return more stories and increase run time.

## Actor input object example

```json
{
  "query": "OpenAI product announcements",
  "pages": 1
}
```

# Actor output Schema

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

No description

## `runSummary` (type: `string`):

No description

## `failedQueries` (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 = {
    "query": "OpenAI product announcements"
};

// Run the Actor and wait for it to finish
const run = await client.actor("curly/news-scraper-api").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 = { "query": "OpenAI product announcements" }

# Run the Actor and wait for it to finish
run = client.actor("curly/news-scraper-api").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 '{
  "query": "OpenAI product announcements"
}' |
apify call curly/news-scraper-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,curly/news-scraper-api"
        }
    }
}

```

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/3snpRtFU6sTeNa6c7/builds/UKh9HtkTtsa9wvZg2/openapi.json
