Newscatcher SearchByLink API
Operations to search by link or ID.
Operations to search by link or ID.
openapi: 3.0.3
info:
title: Local News AggregationCount SearchByLink API
description: 'The Local News API provides access to local news articles with location-specific filtering capabilities.
## Standard endpoints
- `/search`: Search articles by keywords with simple location filtering ("City, State" format).
- `/latest_headlines`: Retrieve recent articles for specified locations and time periods.
- `/search_by`: Retrieve articles by URL, ID, or RSS GUID.
- `/sources`: List available news sources.
## Advanced endpoints
- `/search/advanced`: Search with structured GeoNames filtering.
- `/latest_headlines/advanced`: Latest headlines with structured GeoNames filtering.
## Features
- Multiple location detection methods including dedicated sources, proximity analysis, and AI extraction
- Natural language processing for sentiment analysis and entity recognition on original content and English translations
- Article clustering for topic analysis
- English translations for non-English content
'
termsOfService: https://newscatcherapi.com/terms-of-service
contact:
name: Maksym Sugonyaka
email: maksym@newscatcherapi.com
url: https://www.newscatcherapi.com/book-a-demo
version: 1.2.0
servers:
- url: https://local-news.newscatcherapi.com
description: Local News API production server
security:
- ApiKeyAuth: []
tags:
- name: SearchByLink
description: Operations to search by link or ID.
externalDocs:
description: Search for articles by link or ID.
url: https://www.newscatcherapi.com/docs/news-api/api-reference/search-by-link/search-articles-by-links-or-ids-get
paths:
/api/search_by_link:
get:
x-fern-sdk-group-name: search_by_link
x-fern-sdk-method-name: get
tags:
- SearchByLink
summary: Search articles by links or IDs
description: Searches for articles based on specified links or IDs. You can filter results by date range.
operationId: searchByLinkGet
parameters:
- $ref: '#/components/parameters/Ids'
- $ref: '#/components/parameters/Links'
- name: from_
in: query
required: false
schema:
allOf:
- $ref: '#/components/schemas/From'
default: 1 month ago
- $ref: '#/components/parameters/To'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/RobotsCompliant'
responses:
'200':
$ref: '#/components/responses/SearchByLinkResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'403':
$ref: '#/components/responses/ForbiddenError'
'408':
$ref: '#/components/responses/RequestTimeoutError'
'422':
$ref: '#/components/responses/ValidationError'
'429':
$ref: '#/components/responses/RateLimitError'
'500':
$ref: '#/components/responses/InternalServerError'
post:
x-fern-sdk-group-name: search_by_link
x-fern-sdk-method-name: post
tags:
- SearchByLink
summary: Search articles by links or IDs
description: Searches for articles using their ID(s) or link(s).
operationId: searchByLinkPost
requestBody:
$ref: '#/components/requestBodies/SearchByLinkRequestBody'
responses:
'200':
$ref: '#/components/responses/SearchByLinkResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'403':
$ref: '#/components/responses/ForbiddenError'
'408':
$ref: '#/components/responses/RequestTimeoutError'
'422':
$ref: '#/components/responses/ValidationError'
'429':
$ref: '#/components/responses/RateLimitError'
'500':
$ref: '#/components/responses/InternalServerError'
components:
responses:
UnauthorizedError:
description: Unauthorized - Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
message: The 'x-api-token' parameter has an invalid value. Please provide a valid API key.
status_code: 401
status: Unauthorized
ForbiddenError:
description: Forbidden - Server refuses action
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
message: Your plan request date range cannot be greater than 400 days
status_code: 403
status: Forbidden
SearchByLinkResponse:
description: A successful response containing articles that match the provided links or IDs.
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResponseDto'
RequestTimeoutError:
description: Request timeout
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
message: Request timed out after 30 seconds
status_code: 408
status: Request timeout
RateLimitError:
description: Too many requests - Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
message: Max API requests concurrency reached
status_code: 429
status: Too many requests
BadRequestError:
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
message: Invalid JSON in request body
status_code: 400
status: Bad request
ValidationError:
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
message: Invalid date format
status_code: 422
status: Validation error
InternalServerError:
description: Internal server error
content:
text/plain:
schema:
type: string
example: Internal Server Error
parameters:
RobotsCompliant:
name: robots_compliant
in: query
required: false
schema:
$ref: '#/components/schemas/RobotsCompliant'
Page:
name: page
in: query
required: false
schema:
$ref: '#/components/schemas/Page'
Ids:
description: "The Newscatcher article ID (corresponds to the `_id` field in API response) or a list of article IDs to search for. To specify multiple IDs, use a comma-separated string. \n\n**Caution**: You can use either the `links` or the `ids` parameter, but not both at the same time.\n"
name: ids
in: query
required: false
schema:
type: string
example: 5f8d0d55b6e45e00179c6e7e
PageSize:
name: page_size
in: query
required: false
schema:
$ref: '#/components/schemas/PageSize'
Links:
description: 'The article link or list of article links to search for. To specify multiple links, use a comma-separated string.
**Caution**: You can use either the `links` or the `ids` parameter, but not both at the same time.
'
name: links
in: query
required: false
schema:
type: string
example: https://nytimes.com/article1,https://bbc.com/article2
To:
name: to_
in: query
required: false
schema:
$ref: '#/components/schemas/To'
schemas:
ArticlesDto:
title: Articles
description: A list of articles matching the search criteria.
type: array
items:
$ref: '#/components/schemas/ArticleEntity'
default: []
UserInputDto:
type: object
description: The user input parameters for the request.
additionalProperties: true
NlpDataEntity:
type: object
default: {}
description: Natural Language Processing data for the article.
properties:
translation_summary:
type: string
description: 'A brief AI-generated summary of the article''s English translation.
'
theme:
type: string
description: The themes or categories identified in the article.
summary:
type: string
description: A brief AI-generated summary of the article content.
sentiment:
$ref: '#/components/schemas/SentimentScores'
new_embedding:
type: array
items:
type: number
format: float
description: 'A dense 1024-dimensional vector representation of the article content, generated using the [multilingual-e5-large](https://huggingface.co/intfloat/multilingual-e5-large) model. Available for articles indexed before January 1, 2026.
**Note**: The `new_embedding` field is only available in the `v3_nlp_embeddings` subscription plan.
'
qwen_embedding:
type: array
items:
type: number
format: float
description: 'A dense 1024-dimensional vector representation of the article content, generated using the [Qwen3-Embedding-0.6B](https://huggingface.co/Qwen/Qwen3-Embedding) model. Available for articles indexed from January 1, 2026 onward. Embeddings are computed from a combination of the article `title` and `content` fields.
**Note**: The `qwen_embedding` field is only available in the `v3_nlp_embeddings` subscription plan.
'
ner_PER:
allOf:
- $ref: '#/components/schemas/NamedEntityList'
description: Named Entity Recognition for person entities (individuals' names).
ner_ORG:
allOf:
- $ref: '#/components/schemas/NamedEntityList'
description: Named Entity Recognition for organization entities (company names, institutions).
ner_MISC:
allOf:
- $ref: '#/components/schemas/NamedEntityList'
description: Named Entity Recognition for miscellaneous entities (events, nationalities, products).
ner_LOC:
allOf:
- $ref: '#/components/schemas/NamedEntityList'
description: Named Entity Recognition for location entities (cities, countries, geographic features).
translation_ner_PER:
allOf:
- $ref: '#/components/schemas/NamedEntityList'
description: 'Named Entity Recognition for person entities (individuals'' names) extracted from the English translation of the article.
'
translation_ner_ORG:
allOf:
- $ref: '#/components/schemas/NamedEntityList'
description: 'Named Entity Recognition for organization entities (company names, institutions) extracted from the English translation of the article.
'
translation_ner_MISC:
allOf:
- $ref: '#/components/schemas/NamedEntityList'
description: 'Named Entity Recognition for miscellaneous entities (events, nationalities, products) extracted from the English translation of the article.
'
translation_ner_LOC:
allOf:
- $ref: '#/components/schemas/NamedEntityList'
description: 'Named Entity Recognition for location entities (cities, countries, geographic features) extracted from the English translation of the article.
'
iptc_tags_name:
type: array
items:
type: string
description: 'IPTC media topic taxonomy paths identified in the article content. Each path represents a hierarchical category following the IPTC standard.
**Note**: The `iptc_tags_name` field is only available in the `v3_nlp_iptc_tags` subscription plan.
'
iptc_tags_id:
type: array
items:
type: string
description: 'IPTC media topic numeric codes identified in the article content. These codes correspond to the standardized IPTC media topic taxonomy.
**Note**: The `iptc_tags_id` field is only available in the `v3_nlp_iptc_tags` subscription plan.
'
iab_tags_name:
type: array
items:
type: string
description: 'IAB content taxonomy paths identified in the article content. Each path represents a hierarchical category following the IAB content standard.
**Note**: The `iab_tags_name` field is only available in the `v3_nlp_iptc_tags` subscription plan.
'
Ids:
oneOf:
- type: string
example: 5f8d0d55b6e45e00179c6e7e,5f8d0d55b6e45e00179c6e7f
- type: array
items:
type: string
example:
- 5f8d0d55b6e45e00179c6e7e
- 5f8d0d55b6e45e00179c6e7f
description: 'The Newscatcher article ID (corresponds to the `_id` field in API response) or a list of article IDs to search for. To specify multiple IDs, use a comma-separated string or an array of strings.
**Caution**: You can use either the `links` or the `ids` parameter, but not both at the same time.
'
To:
oneOf:
- type: string
example: now
- type: string
format: date-time
example: 2024-01-01 00:00:00
description: "The ending point in time to search up to. Accepts date-time strings in ISO 8601 format and plain text strings. The default time zone is UTC. \n\nFormats with examples:\n- YYYY-mm-ddTHH:MM:SS: `2024-07-01T00:00:00`\n- YYYY-MM-dd: `2024-07-01`\n- YYYY/mm/dd HH:MM:SS: `2024/07/01 00:00:00`\n- YYYY/mm/dd: `2024/07/01`\n- English phrases: `1 day ago`, `now`\n- Duration shorthand: `7d`, `30d`, `24h`, `48h`\n\n**Note**: By default, applied to the publication date of the article. To use the article's parse date instead, set the `by_parse_date` parameter to `true`.\n"
default: now
RobotsCompliant:
type: boolean
description: 'If true, returns only articles that comply with the publisher''s robots.txt rules. If false, returns only articles that do not comply with robots.txt rules. If omitted, returns all articles regardless of compliance status.
'
example: true
NamedEntityList:
type: array
description: A list of named entities identified in the article.
items:
type: object
properties:
entity_name:
type: string
description: The name of the entity identified in the article.
count:
type: integer
description: The number of times this entity appears in the article.
SentimentScores:
type: object
description: Sentiment scores for the article's title and content.
properties:
title:
type: number
format: float
description: The sentiment score for the article title (-1.0 to 1.0).
content:
type: number
format: float
description: The sentiment score for the article content (-1.0 to 1.0).
PageSize:
type: integer
minimum: 1
maximum: 1000
default: 100
description: 'The number of articles to return per page.
'
example: 50
Error:
type: object
properties:
message:
type: string
description: A detailed description of the error.
status_code:
type: integer
description: The HTTP status code of the error.
status:
type: string
description: A short description of the status code.
required:
- message
- status_code
- status
ArticleEntity:
title: Article Object
description: The data model representing a single article in the search results.
required:
- title
- link
- domain_url
- full_domain_url
- parent_url
- rank
- id
- score
type: object
properties:
title:
title: Title
description: The title of the article.
type: string
author:
title: Author
description: The primary author of the article.
type: string
authors:
title: Authors
description: A list of authors of the article.
anyOf:
- type: array
items:
type: string
- type: string
journalists:
title: Journalists
description: A list of journalists associated with the article.
anyOf:
- type: array
items:
type: string
- type: string
- type: 'null'
published_date:
title: Published Date
description: The date the article was published.
type: string
published_date_precision:
title: Published Date Precision
description: The precision of the published date.
type: string
updated_date:
title: Updated Date
description: The date the article was last updated.
type:
- string
- 'null'
updated_date_precision:
title: Updated Date Precision
description: The precision of the updated date.
type:
- string
- 'null'
parse_date:
title: Parse Date
description: The date the article was parsed.
type:
- string
- 'null'
link:
title: Link
description: The URL link to the article.
type: string
domain_url:
title: Domain URL
description: The domain URL of the article.
type: string
full_domain_url:
title: Full Domain URL
description: The full domain URL of the article.
type: string
name_source:
title: Name Source
description: The name of the source where the article was published.
type: string
is_headline:
title: Is Headline
description: Indicates if the article is a headline.
type: boolean
paid_content:
title: Paid Content
description: Indicates whether the source labels the article as paywalled or requiring a subscription for full access.
type: boolean
parent_url:
title: Parent URL
description: The categorical URL of the article.
type: string
country:
title: Country
description: The country where the article was published.
type: string
rights:
title: Rights
description: The rights information for the article.
type: string
rank:
title: Rank
description: The rank of the article's source.
type: integer
media:
title: Media
description: The media associated with the article.
type: string
language:
title: Language
description: The language in which the article is written.
type: string
description:
title: Description
description: A brief description of the article.
type: string
content:
title: Content
description: The content of the article.
type: string
title_translated_en:
type:
- string
- 'null'
description: 'English translation of the article title. Available when using the `search_in` parameter with the `title_translated` option or by setting the `include_translation_fields` parameter to `true`.
'
content_translated_en:
type:
- string
- 'null'
description: 'English translation of the article content. Available when using the `search_in` parameter with the `content_translated` option or by setting the `include_translation_fields` parameter to `true`.
'
word_count:
title: Word Count
description: The word count of the article.
type: integer
default: 0
is_opinion:
title: Is Opinion
description: Indicates if the article is an opinion piece.
type: boolean
twitter_account:
title: Twitter Account
description: The Twitter account associated with the article.
type:
- string
- 'null'
all_links:
title: All Links
description: A list of all URLs mentioned in the article.
anyOf:
- type: array
items:
type: string
- type: string
default: []
all_domain_links:
title: All Domain Links
description: A list of all domain URLs mentioned in the article.
anyOf:
- type: array
items:
type: string
- type: string
default: []
all_links_data:
title: All Links Data
description: 'Detailed information about all links mentioned in the article, including link URL, domain, and anchor text. Only present when the `all_links_text` parameter is used in the request.
'
type: array
items:
$ref: '#/components/schemas/AllLinksDataItem'
default: []
nlp:
$ref: '#/components/schemas/NlpDataEntity'
id:
title: ID
description: The unique identifier for the article.
type: string
score:
title: Score
description: The relevance score of the article.
type: number
robots_compliant:
title: Robots Compliant
description: 'True if the article content can be safely accessed according to the publisher''s robots.txt rules; false otherwise.
'
type: boolean
example: true
custom_tags:
title: Custom Tags
description: An object that contains custom tags associated with an article, where each key is a taxonomy name, and the value is an array of tags.
type: object
additionalProperties:
type: array
items:
type: string
default: {}
additional_domain_info:
$ref: '#/components/schemas/AdditionalDomainInfoEntity'
SearchResponseDto:
title: Search Response
description: "The response model for the search requests applies to the `Search`, `Latest Headlines`, `Search by link`, and `Authors` endpoints. Response field behavior:\n- Required fields are guaranteed to be present and non-null. \n- Optional fields may be `null` or `undefined` if the data point is not presented or couldn't be extracted during processing.\n- To access article properties in the `articles` response array, use array index notation. For example, `articles[n].title`, where `n` is the zero-based index of the article object (0, 1, 2, etc.).\n- The `nlp` property within the article object `articles[n].nlp` is only available with NLP-enabled subscription plans.\n"
allOf:
- $ref: '#/components/schemas/BaseSearchResponseDto'
- type: object
properties:
articles:
$ref: '#/components/schemas/ArticlesDto'
user_input:
$ref: '#/components/schemas/UserInputDto'
AllLinksDataItem:
title: Link Data Item
description: Detailed information about a link found in an article.
required:
- domain_url
- link
- text
type: object
properties:
domain_url:
title: Domain URL
description: The domain of the linked URL.
type: string
example: amazon.de
link:
title: Link
description: The complete URL of the link.
type: string
example: https://www.amazon.de/s?k=Künstliche+Intelligenz
text:
title: Text
description: The anchor text of the link.
type: string
example: KI Brillen
From:
oneOf:
- type: string
format: date-time
example: 2024-07-01 00:00:00
- type: string
example: 1 day ago
default: 7 days ago
description: "The starting point in time to search from. Accepts date-time strings in ISO 8601 format and plain text strings. The default time zone is UTC. \n\nFormats with examples:\n- YYYY-mm-ddTHH:MM:SS: `2024-07-01T00:00:00`\n- YYYY-MM-dd: `2024-07-01`\n- YYYY/mm/dd HH:MM:SS: `2024/07/01 00:00:00`\n- YYYY/mm/dd: `2024/07/01`\n- English phrases: `7 day ago`, `today`\n- Duration shorthand: `7d`, `30d`, `24h`, `48h`\n\n**Note**: By default, applied to the publication date of the article. To use the article's parse date instead, set the `by_parse_date` parameter to `true`.\n"
example: 2021/01/01
BaseSearchResponseDto:
title: Base Search Response
description: The base response model containing common fields for search operations.
required:
- status
- total_hits
- page
- total_pages
- page_size
type: object
properties:
status:
title: Status
description: The status of the response.
type: string
total_hits:
title: Total Hits
description: The total number of articles matching the search criteria.
type: integer
page:
title: Page
description: The current page number of the results.
type: integer
total_pages:
title: Total Pages
description: The total number of pages available for the given search criteria.
type: integer
page_size:
title: Page Size
description: The number of articles per page.
type: integer
Page:
type: integer
minimum: 1
default: 1
description: "The page number to scroll through the results. Use for pagination, as a single API response can return up to 1,000 articles. \n\nFor details, see [Retrieve large datasets](https://www.newscatcherapi.com/docs/news-api/how-to/retrieve-more-than-10k-articles)\n"
example: 2
Links:
oneOf:
- type: string
example: https://nytimes.com/article1, https://bbc.com/article2
- type: array
items:
type: string
example:
- https://nytimes.com/article1
- https://bbc.com/article2
description: 'The article link or list of article links to search for. To specify multiple links, use a comma-separated string or an array of strings.
**Caution**: You can use either the `links` or the `ids` parameter, but not both at the same time.
'
example: https://nytimes.com/article1
AdditionalDomainInfoEntity:
title: Additional Domain Info
description: Additional information about the domain of the article.
type: object
properties:
is_news_domain:
title: Is News Domain
description: Indicates whether the domain is a news domain.
type: boolean
news_type:
title: News Type
description: The type of news content provided by the domain.
type: string
news_domain_type:
title: News Domain Type
description: The type of news domain.
type: string
example:
is_news_domain: true
news_type: News and Blogs
news_domain_type: Original Content
requestBodies:
SearchByLinkRequestBody:
description: Request body for searching articles based on specified links or IDs.
required: true
content:
application/json:
schema:
type: object
properties:
ids:
$ref: '#/components/schemas/Ids'
links:
$ref: '#/components/schemas/Links'
from_:
allOf:
- $ref: '#/components/schemas/From'
default: 1 month ago
to_:
$ref: '#/components/schemas/To'
page:
$ref: '#/components/schemas/Page'
page_size:
$ref: '#/components/schemas/PageSize'
robots_compliant:
$ref: '#/components/schemas/RobotsCompliant'
example:
links: https://www.reuters.com/business/energy/oil-prices-up-after-israeli-attacks-oversupply-caps-gains-2025-09-10/
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-token
description: "API Key to authenticate requests.\n\nTo access the API, include your API key in the `x-api-token` header. \nTo obtain your API key, complete the [form](https://www.newscatcherapi.com/book-a-demo) or contact us directly.\n"
externalDocs:
description: Find out more about Local News API
url: https://www.newscatcherapi.com/docs/local-news-api/get-started/introduction