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.

GEThttps://apis.newssearchapi.com/v1/articlesAPI key

Parameters

  • qstringquery

    Search syntax (max 500 characters): quoted phrases, AND/OR/NOT and parentheses; max 10 boolean operators.

    Example
    "climate summit" OR elections
  • search_instringquery

    Comma-separated fields to search: title, description, content. Content search is available on every plan.

    Example
    title,description,content
  • domainsstringquery

    Include up to 10 publisher domains; matching includes subdomains.

    Example
    example.com,news.example.org
  • exclude_domainsstringquery

    Exclude up to 10 publisher domains; matching includes subdomains.

    Example
    spam.example
  • regionstringquery

    Case-insensitive article region filter (maximum 100 characters).

    Example
    Europe
  • dedupebooleanquery

    Keep one article per story, selecting the highest trust score.

    Default
    false
  • cursorstringquery

    Opaque nextPageToken from the previous response; continue after exactly the articles returned.

  • countrystringquery

    Comma-separated ISO 3166-1 alpha-2 codes (max 10, case-insensitive). Matches any of them.

    Example
    us,gb
  • languagestringquery

    Comma-separated ISO 639-1 codes (max 10, case-insensitive). Matches any of them.

    Example
    en,fr
  • categorystringquery

    Comma-separated categories (max 10, each 1–50 characters). Matches articles having any of them (case-insensitive, exact match).

    Example
    politics,world
  • authorstringquery

    Case-insensitive substring match on the article author (max 100 characters).

    Example
    smith
  • fromstringquery

    Oldest publishedAt to include (inclusive), UTC. Either a date YYYY-MM-DD (00:00:00 UTC that day) or a datetime: RFC 3339 with Z or an offset (URL-encode + as %2B), optional fractional seconds, or YYYY-MM-DDTHH:MM[:SS] without offset (interpreted as UTC). Must be earlier than to.

    Example
    2026-10-01
  • tostringquery

    Newest publishedAt to include (inclusive), UTC. Same formats as from; a date-only value includes the whole day (up to 23:59:59.999999 UTC).

    Example
    2026-10-31
  • indexed_fromstringquery

    ISO-8601 date or datetime (inclusive). Filters on created_at, the time this article version was last indexed. Use with sort=indexed_desc and the last seen indexedAt for incremental sync; repeat with an overlap window if your pipeline needs retries.

    Example
    2026-10-31T09:00:00Z
  • sortstringquery

    Relevance (title hit > description hit > content hit, then recency), publication time, or indexed time.

    Default
    published_desc
    One of
    relevancepublished_descpublished_ascindexed_desc
  • modestringquery

    Ranking mode. lexical (default) is keyword search over the whole archive. semantic ranks by meaning (embedding similarity); hybrid fuses lexical and semantic ranks (reciprocal rank fusion). Both require q, apply every other filter, sort by relevance only (sort must be omitted or relevance), do not support dedupe, return at most the first 200 results (offset plus page_size ≤ 200), and omit totalResults. 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 with 503 serviceUnavailable; it never falls back to lexical.

    Default
    lexical
    One of
    lexicalsemantichybrid
  • pageintegerquery

    1-based page number.

    Default
    1
  • page_sizeintegerquery

    Results per page; maximum 100 for every key. page × page_size must be ≤ 10,000.

    Default
    10
    Example
    10

Response 200 · application/json

A page of articles.

  • statusstringalways
  • totalResultsinteger

    Total matches; present on page one only.

  • nextPageTokenstring | null

    Use as the cursor query parameter to continue after returned articles.

  • semanticLaginteger

    mode=semantic|hybrid only: newest article versions not yet in the semantic index (they can still match lexically in hybrid).

  • semanticStatestring

    mode=semantic|hybrid only: semantic index progress. stalled means indexing is far behind or not progressing.

    One of okindexingstallednot_built

  • pageintegeralways
  • pageSizeintegeralways
  • articlesobject[]always
    Show 18 child fields
    • idstring

      Stable stored article id.

    • titlestring
    • descriptionstring | null
    • contentstring

      Plain-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.

    • contentTruncatedboolean

      True when content is an excerpt ending with an ellipsis, which is the case on every plan.

    • urlstring
    • imageUrlstring | null
    • authorstring | null
    • publishedAtstring

      RFC 3339, UTC, second precision.

    • languagestring | null

      ISO 639-1 code (lowercase first two letters of the article locale).

    • countrystring | null

      Lowercase country code.

    • regionstring | null
    • categoriesstring[]

      May be empty.

    • sourceobject

      Publisher display name and website hostname; internal site IDs are never exposed.

      Show 2 child fields
      • namestring
      • domainstring
    • indexedAtstring | null

      Time this article version was last indexed; use with indexed_from for incremental sync.

    • storyIdstring | null

      Dedupe story identifier.

    • trustScorenumber | null

      Article trust score.

    • corroboratedByinteger

      Number 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.
Stuck or found a mistake?Email developer support

Esc to close · ↑↓ Tab to move through results