> ## Documentation Index
> Fetch the complete documentation index at: https://newscatcherinc-docs.mintlify.site/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Retrieve sources

> Retrieves the list of local news sources available in the database. Filterable by language, country, and theme.



## OpenAPI

````yaml local-news-api post /api/sources
openapi: 3.0.3
info:
  title: Local News 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: Search
    description: >-
      Operations to search for local news articles. Includes both standard
      location filtering and advanced GeoNames filtering.
  - name: LatestHeadlines
    description: >-
      Operations to retrieve local news latest headlines. Includes both standard
      location filtering and advanced GeoNames filtering.
  - name: SearchBy
    description: Operations to search local news by link, ID or RSS GUID.
  - name: Sources
    description: Operations to retrieve local news sources.
externalDocs:
  description: Find out more about Local News API
  url: https://www.newscatcherapi.com/docs/local-news-api/get-started/introduction
paths:
  /api/sources:
    post:
      tags:
        - Sources
      summary: Retrieve sources
      description: >-
        Retrieves the list of local news sources available in the database.
        Filterable by language, country, and theme.
      operationId: Sources_post
      requestBody:
        $ref: '#/components/requestBodies/SourceRequestBody'
      responses:
        '200':
          $ref: '#/components/responses/SourcesResponse'
        '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:
  requestBodies:
    SourceRequestBody:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SourcesRequestDto'
  responses:
    SourcesResponse:
      description: Successful response containing the list of sources
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SourcesResponseDto'
    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
    UnauthorizedError:
      description: Unauthorized - Authentication failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: 'Invalid api key: INVALID_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
    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
    ValidationError:
      description: Validation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Invalid date format
            status_code: 422
            status: Validation error
    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
    InternalServerError:
      description: Internal server error
      content:
        text/plain:
          schema:
            type: string
          example: Internal Server Error
  schemas:
    SourcesRequestDto:
      type: object
      properties:
        lang:
          $ref: '#/components/schemas/Lang'
        countries:
          $ref: '#/components/schemas/Countries'
        theme:
          $ref: '#/components/schemas/Theme'
    SourcesResponseDto:
      title: Sources Response
      description: >
        The response model for the `Sources` request.


        Response field behavior:

        - Required fields are guaranteed to be present and non-null.

        - Optional fields may be `null`/`undefined` if the data couldn't be
        extracted during processing.
      type: object
      required:
        - message
        - sources
        - user_input
      properties:
        message:
          type: string
          description: A message describing the result of the sources request.
        sources:
          type: array
          items:
            type: string
          description: A list of available local news sources.
        user_input:
          $ref: '#/components/schemas/SourcesUserInputDto'
    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
    Lang:
      oneOf:
        - type: string
        - type: array
          items:
            type: string
      description: >
        The language(s) of the search. The only accepted format is the
        two-letter [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) code. To
        select multiple languages, use a comma-separated string or an array of
        strings.


        To learn more, see [Enumerated parameters >
        Language](https://www.newscatcherapi.com/docs/news-api/api-reference/enumerated-parameters#language-lang-and-not-lang).
      example:
        - en
        - es
    Countries:
      oneOf:
        - type: string
        - type: array
          items:
            type: string
      description: >
        The countries where the news publisher is located. The accepted format
        is the two-letter [ISO 3166-1
        alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code. To
        select multiple countries, use a comma-separated string or an array of
        strings.


        To learn more, see [Enumerated parameters >
        Country](https://www.newscatcherapi.com/docs/news-api/api-reference/enumerated-parameters#country-country-and-not-country).
      example:
        - US
        - CA
    Theme:
      oneOf:
        - type: string
        - type: array
          items:
            type: string
      description: >
        Filters articles based on their general topic, as determined by NLP
        analysis. To select multiple themes, use a comma-separated string or an
        array of strings. 


        To learn more, see [NLP
        features](https://www.newscatcherapi.com/docs/news-api/guides-and-concepts/nlp-features).


        Available options: `Business`, `Economics`, `Entertainment`, `Finance`,
        `Health`, `Politics`, `Science`, `Sports`, `Tech`, `Crime`, `Financial
        Crime`, `Lifestyle`, `Automotive`, `Travel`, `Weather`, `General`.
      example:
        - Business
        - Finance
    SourcesUserInputDto:
      title: Sources User Input
      description: The user input parameters used to search local news sources.
      type: object
      properties:
        lang:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          description: The language(s) of the retrieved sources.
        countries:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          description: The country or countries of the retrieved sources.
        theme:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          description: The theme(s) of the retrieved sources.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-token
      description: >
        API Key to authenticate requests.


        To access the API, include your API key in the `x-api-token` header. 

        To obtain your API key, complete the
        [form](https://www.newscatcherapi.com/book-a-demo) or contact us
        directly.

````