Newscatcher SearchByLink API

Operations to search by link or ID.

OpenAPI Specification

newscatcher-searchbylink-api-openapi.yml Raw ↑
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