Search articles
Returns articles matching all supplied filters. q supports quoted phrases, AND/OR/NOT and parentheses (at most 10 boolean operators); search uses the isx archive keyword index. search_in selects title, description, and/or content. Content can be searched on every plan; responses return only an excerpt of it. When dates are omitted, the search defaults to the last 7 days; this default window is separate from the 30 days of history included in pricing. Ranges may extend across the available archive, with the documented surcharge applying beyond 30 days. A query the archive rejects as too broad returns 400; narrow the range or add filters. Page one includes totalResults; later pages omit it. dedupe=true keeps the highest-trust article per story. Relevance ranks title hits above description and content, then sorts by recency.
https://apis.newssearchapi.com/v1/articlesAPI keyParameters
qstringquerySearch syntax (max 500 characters): quoted phrases, AND/OR/NOT and parentheses; max 10 boolean operators.
search_instringqueryComma-separated fields to search: title, description, content. Content search is available on every plan.
domainsstringqueryInclude up to 10 publisher domains; matching includes subdomains.
exclude_domainsstringqueryExclude up to 10 publisher domains; matching includes subdomains.
regionstringqueryCase-insensitive article region filter (maximum 100 characters).
dedupebooleanqueryKeep one article per story, selecting the highest trust score.
cursorstringqueryOpaque nextPageToken from the previous response; continue after exactly the articles returned.
countrystringqueryComma-separated ISO 3166-1 alpha-2 codes (max 10, case-insensitive). Matches any of them.
languagestringqueryComma-separated ISO 639-1 codes (max 10, case-insensitive). Matches any of them.
categorystringqueryComma-separated categories (max 10, each 1–50 characters). Matches articles having any of them (case-insensitive, exact match).
authorstringqueryCase-insensitive substring match on the article author (max 100 characters).
fromstringqueryOldest
publishedAtto include (inclusive), UTC. Either a dateYYYY-MM-DD(00:00:00 UTC that day) or a datetime: RFC 3339 withZor an offset (URL-encode+as%2B), optional fractional seconds, orYYYY-MM-DDTHH:MM[:SS]without offset (interpreted as UTC). Must be earlier thanto.tostringqueryNewest
publishedAtto include (inclusive), UTC. Same formats asfrom; a date-only value includes the whole day (up to 23:59:59.999999 UTC).indexed_fromstringqueryISO-8601 date or datetime (inclusive). Filters on
created_at, the time this article version was last indexed. Use withsort=indexed_descand the last seenindexedAtfor incremental sync; repeat with an overlap window if your pipeline needs retries.sortstringqueryRelevance (title hit > description hit > content hit, then recency), publication time, or indexed time.
modestringqueryRanking mode.
lexical(default) is keyword search over the whole archive.semanticranks by meaning (embedding similarity);hybridfuses lexical and semantic ranks (reciprocal rank fusion). Both requireq, apply every other filter, sort by relevance only (sortmust be omitted orrelevance), do not supportdedupe, return at most the first 200 results (offset pluspage_size≤ 200), and omittotalResults. Semantic coverage is limited to the most recently indexed article versions; the newest articles may not be embedded yet (hybrid still finds them lexically). If the semantic index has not been built or its provider is unavailable the request fails with503 serviceUnavailable; it never falls back to lexical.pageintegerquery1-based page number.
page_sizeintegerqueryResults per page; maximum 100 for every key.
page × page_sizemust be ≤ 10,000.
Response
A page of articles.
statusstringalwaystotalResultsintegerTotal matches; present on page one only.
nextPageTokenstring | nullUse as the cursor query parameter to continue after returned articles.
semanticLagintegermode=semantic|hybrid only: newest article versions not yet in the semantic index (they can still match lexically in hybrid).
semanticStatestringmode=semantic|hybrid only: semantic index progress. stalled means indexing is far behind or not progressing.
One of
okindexingstallednot_builtpageintegeralwayspageSizeintegeralwaysarticlesobject[]alwaysShow 18 child fields
idstringStable stored article id.
titlestringdescriptionstring | nullcontentstringPlain-text excerpt of the article body (every plan). Markdown links become link text and images are omitted; stored HTML is converted to text. Paragraphs are separated by blank lines. The excerpt is about 200 characters, ending at a sentence or paragraph boundary when possible, otherwise at a word boundary, followed by an ellipsis. Full article text is not returned.
contentTruncatedbooleanTrue when
contentis an excerpt ending with an ellipsis, which is the case on every plan.urlstringimageUrlstring | nullauthorstring | nullpublishedAtstringRFC 3339, UTC, second precision.
languagestring | nullISO 639-1 code (lowercase first two letters of the article locale).
countrystring | nullLowercase country code.
regionstring | nullcategoriesstring[]May be empty.
sourceobjectPublisher display name and website hostname; internal site IDs are never exposed.
Show 2 child fields
namestringdomainstring
indexedAtstring | nullTime this article version was last indexed; use with
indexed_fromfor incremental sync.storyIdstring | nullDedupe story identifier.
trustScorenumber | nullArticle trust score.
corroboratedByintegerNumber of corroborating publishers.
Errors
Every error uses the same envelope with a stable code. See error handling for which ones to retry.
- 400Invalid parameter after authentication; no credits are charged.
- 401Missing (`apiKeyMissing`) or invalid (`apiKeyInvalid`) API key.
- 402Sharedstack could not reserve the maximum charge for this article request (`insufficientCredits`). `X-Credits-Remaining` is `unknown` if Stack does not return a balance.
- 403No active sharedstack plan or subscription; no credits are charged. Revoked-key responses may omit these headers.
- 405Only GET, HEAD and OPTIONS are supported (`methodNotAllowed`).
- 429The uniform gateway rate limit was exceeded; no credits are charged.
- 500Unexpected server error after authentication; no credits are charged.
- 503Dependency unavailable after authentication; no credits are charged.