Skip to main content
POST

Authorizations

x-api-key
string
header
required

Your NewsCatcher API key, created in the NewsCatcher platform. Send it in the x-api-key header of every request.

Body

application/json

What to search for and how. The same parameters are accepted in the query string of GET /search and in the JSON body of POST /search.

q
string
required

What to look for: keywords with AND/OR/NOT or a plain-language question, in any language. An upper-case NOT (Apple NOT iPhone, NOT "model y") drops the articles whose headline, description or summary mention the term.

Required string length: 1 - 500
Example:

"Tesla recall NOT Cybertruck"

effort
enum<string>
default:medium

How much work goes into the ranking, and the price: low ranks by relevance, authority, coverage and freshness (1 NCC); medium adds a cross-encoder rerank of the top stories (5 NCC); high adds an LLM rerank and merges stories about the same event (10 NCC). Charged only when the search succeeds.

Available options:
low,
medium,
high
Example:

"medium"

limit
integer
default:20

Number of articles to return (1 to 100; a plan may allow fewer, e.g. 50 on Free: the request is refused with 403 above it).

Required range: 1 <= x <= 100
Example:

20

collapse
enum<string>
default:diverse

diverse (default) discounts repeated articles of one story, story keeps one article per story, duplicates keeps every article (copies of one article are always one result).

Available options:
diverse,
story,
duplicates
Example:

"diverse"

sort_by
enum<string>
default:relevancy

The order of the results: relevancy (default) best match first; published_at newest publication first; crawled_at newest crawl first. A date order covers the best matches of q (at least 100, or 5 times limit), not every article of the window, and collapse=diverse then keeps every article, as duplicates does. A publication date later than the crawl date counts as the crawl date.

Available options:
relevancy,
published_at,
crawled_at
Example:

"relevancy"

search_window
string

How far back to search, counted from now and measured on the publication date: a number and a unit, for example 15m, 2h, 1d, 15 minutes, 2 hours, 1 day or 1w. From 1 minute up to your plan's history (30 days on the free plan; a longer request is cut to it and the response says window.clamped). Default: 7d.

Pattern: ^\s*\d+(\.\d+)?\s*[a-zA-Z]+\s*$
Examples:

"7d"

"2h"

"15m"

"1 day"

"2 hours"

"15 minutes"

sources

Only search these publishers: domains, comma-separated or as an array (at most 100). Matches any copy of an article. The result then shows the requested domain: its name, and a link of that domain (with several matching domains on one article, the first of them in the article's order).

Example:

"reuters.com,bbc.co.uk"

languages

Only articles in these languages: ISO 639-1 codes, comma-separated or as an array (at most 100). zh is searched as cn.

Example:

"en,de"

countries

Only articles from publishers in these countries: ISO 3166-1 alpha-2 codes, comma-separated or as an array (at most 100).

Example:

"US,GB"

not_sources

Leave out these publishers: domains, comma-separated or as an array (at most 100). An article is dropped when any of its copies comes from one of them.

Example:

"reuters.com,bbc.co.uk"

not_languages

Leave out articles in these languages: ISO 639-1 codes, comma-separated or as an array (at most 100). zh is excluded as cn.

Example:

"en,de"

not_countries

Leave out articles from publishers in these countries: ISO 3166-1 alpha-2 codes, comma-separated or as an array (at most 100).

Example:

"US,GB"

min_newsrooms
integer
default:0

Only stories carried by at least this many newsrooms.

Required range: 0 <= x <= 1000
Example:

3

content_type
enum<string>
default:news

news (default) keeps real news articles only; all returns every article, whatever its type.

Available options:
news,
all
Example:

"news"

include

Heavy fields to add to every result, comma-separated or as an array: description, entities, sentiment, themes, translation, embedding. Enterprise accounts only (403 enterprise_field otherwise).

Example:

"entities,sentiment"

Response

The articles, best first. count is 0 and results empty when nothing matched.

The articles that match a search, with the window that was searched.

query
string
required

The query as received (control characters replaced, ends trimmed).

Example:

"hurricane recovery florida"

effort
enum<string>
required

The effort level that ran: low, medium or high.

Available options:
low,
medium,
high
Example:

"medium"

took_ms
integer
required

Time the search took on our side, in milliseconds.

Required range: x >= 0
Example:

3664

window
NewsWindow · object
required

The time window that was searched: search_window back from to, which is when the search ran.

count
integer
required

Number of results returned (at most limit).

Required range: x >= 0
Example:

1

results
NewsResult · object[]
required

The articles, in the order of sort_by.

sort_by
string | null

The order of the results: relevancy (best match first), published_at or crawled_at (newest first).

Example:

"relevancy"

excluded
string[] | null

The terms of the NOT clauses of q: articles whose headline, description or summary mention one are left out. Absent when q has no NOT.

Example: