# News Headlines & Search API (70+ outlets) (`noozra/noozra-news`) Actor

Latest headlines, headline search and every outlet's coverage of one story, from 70+ news sites. Each item has the headline, the publisher's own summary and image, the link to the article, and a story id that groups coverage. Try it without a key; a free Noozra API key unlocks the rest.

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

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## 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

## News Headlines & Search API (70+ outlets)

Get the latest headlines from 70+ news sites, search them, or pull every outlet's coverage of one story, as clean JSON. Each article comes with the headline, the publisher's own summary and image, the link to the original article, and a `story_id` that ties together every outlet's version of the same story.

The data comes from the [Noozra news API](https://noozra.com/api). This Actor is a convenient way to run it on Apify: schedule it, send the results to a webhook, Google Sheets or your database, or call it from your own Actors.

### What you can do

- **Latest headlines**: newest first, from every section or one (AI, business, culture, entertainment, finance, general, health, lifestyle, opinion, politics, science, sports, tech, weather, world). Pages through 100 articles per request up to your maximum.
- **One item per story**: list each story once, at its newest article, with `story_size` saying how many articles the story has in the listing's window. A quick way to see what the news is about right now.
- **Search headlines**: find articles from the last 28 days by words in the headline, optionally in one section. Up to 100 results, on every key.
- **Coverage of one story**: give the `story_id` from any article and get every outlet's article about that story, to compare how each one reported it.

### Your Noozra API key

The Actor calls the Noozra API with your own key, which you paste into the input (Apify stores it encrypted).

To try it first, run it with the key left empty: you get the 10 newest headlines of the section you picked (General if none) from Noozra's public RSS feed, without images or story ids. Search and story coverage need a key.

| Key | Requests a day | Use |
|---|---|---|
| Free | 100 | Personal and non-commercial projects |
| API Pro, $9 for 30 days | 25,000 | Commercial use of the API, plus the archive (articles older than 14 days) for latest headlines and story coverage |

Get a free key at [noozra.com/register](https://noozra.com/register?next=%2Faccount%2Fapi): it creates your account and takes you to your API keys, or goes straight to them if you are already signed in. Each request returns up to 100 articles, so a free key covers up to 10,000 articles a day.

You also pay Apify's usual platform usage for the run, which for this Actor is small: it makes plain HTTPS requests and uses no browser.

### Input

| Field | What it does |
|---|---|
| `apiKey` | Your Noozra API key (starts with `nk_`). Leave it empty for a 10-item sample. |
| `mode` | `latest` (default), `search` or `story`. |
| `category` | One section, or empty for all. Latest and Search. |
| `query` | Words to search for. Search only. |
| `groupByStory` | One item per story. Latest only. |
| `storyId` | The story to fetch. Story only. |
| `publishedAfter` | Only articles published after this date. Latest only. A free key reaches back 14 days from now, so pick a date at most 13 days ago; earlier needs API Pro. |
| `maxItems` | Stop after this many articles (default 100). |

Example:

```json
{
    "apiKey": "nk_...",
    "mode": "latest",
    "category": "tech",
    "groupByStory": true,
    "maxItems": 200
}
```

### Output

One dataset item per article:

```json
{
    "id": "a0b4b35e-04a1-49f3-a644-ff54b2408c68",
    "headline": "6 Harry Potter Wizards More Powerful Than The Movies Showed, Ranked",
    "url": "https://screenrant.com/harry-potter-powerful-wizards-nerfed-movies/",
    "published_at": "2026-10-04T21:15:17Z",
    "source": "Screen Rant",
    "category": "entertainment",
    "image_url": "https://static0.srcdn.com/wordpress/wp-content/uploads/2026/10/brendan-gleeson-as-madeye-moody-in-harry-potter.png",
    "image_width": 1920,
    "image_height": 1080,
    "description": "Even some of the most powerful and renowned wizards and witches in the Harry Potter movies are far more powerful in JK Rowlings' original books.",
    "story_id": "55f7bdf2-4810-4c70-94b8-562990d374b0"
}
```

`description` is the summary the publisher wrote, up to 500 characters. `image_url` is the publisher's own image. With `groupByStory`, each item also has `story_size`, the number of articles the story has in the listing's window. Download the results as JSON, CSV, Excel or HTML from the run's Storage tab, or read them through the Apify API.

### Using the data

The headlines, summaries and images belong to their publishers. Show them with the publisher's name and link to the article's `url`; that is what the data is for. A free key is for personal and non-commercial use; using the API in anything that earns money needs API Pro. See the [Noozra terms](https://noozra.com/terms).

### Errors you may see

- **"Noozra refused the API key"**: the key is mistyped, or was revoked or regenerated. Copy it again from [noozra.com/account/api](https://noozra.com/account/api). (**"That is not a Noozra API key"** means the input does not start with `nk_`.)
- **"The API key's daily quota is used up"**: the key's requests for the day are spent; it resets at 00:00 UTC. Articles already saved stay in the dataset.
- **"articles older than 14 days are in the archive, which is part of API Pro"**: `publishedAfter` reaches past the 14-day window of a free key.

### Other ways to use the API

The same data is available directly over HTTPS, through an MCP server for Claude Code, Cursor and other MCP clients, and from n8n's HTTP Request node. See [noozra.com/api](https://noozra.com/api).

# Actor input Schema

## `apiKey` (type: `string`):

Your Noozra API key (it starts with nk\_). Leave it empty to try the Actor: you get the 10 newest headlines of one section from Noozra's public feed. Get a key free at https://noozra.com/register?next=%2Faccount%2Fapi. A free key gives 100 requests a day, for personal and non-commercial use. API Pro gives 25,000 requests a day, commercial use of the API, and the archive (articles older than 14 days) for latest headlines and story coverage. One request returns up to 100 articles.

## `mode` (type: `string`):

Latest headlines (newest first, optionally one section), a headline search, or every outlet's coverage of one story.

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

Only this section. Leave empty for every section. Used by Latest headlines and Search.

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

Words to find in headlines from the last 28 days (on every key). Used by Search headlines, which returns up to 100 results.

## `groupByStory` (type: `boolean`):

With Latest headlines: list each story once, at its newest article, with story_size saying how many articles the story has in the listing's window.

## `storyId` (type: `string`):

With Coverage of one story: the story_id of any article in a previous run's output.

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

With Latest headlines: only articles published after this date. A free key reaches back 14 days from now, so pick a date at most 13 days ago; earlier dates need API Pro.

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

Stop after this many articles. Latest headlines pages through 100 per request; Search and story coverage return at most 100.

## Actor input object example

```json
{
  "mode": "latest",
  "groupByStory": false,
  "maxItems": 100
}
```

# 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": 100
};

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

# Run the Actor and wait for it to finish
run = client.actor("noozra/noozra-news").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": 100
}' |
apify call noozra/noozra-news --silent --output-dataset

```

## MCP server setup

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

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/7zNEcSBjIkYfzVjIm/builds/MLasPFRkswFIdfn1F/openapi.json
