Skip to main content

Documentation Index

Fetch the complete documentation index at: https://newscatcherinc-docs.mintlify.dev/docs/llms.txt

Use this file to discover all available pages before exploring further.

The /sources endpoint lets you discover what news sources News API indexes and verify whether specific domains are covered. For large domain lists, you can check coverage in bulk and identify uncovered sources programmatically.

Before you begin

Make sure you have the following:
  • An active News API key
  • For the async coverage script: Python 3.10+ with the Newscatcher Python SDK installed

Steps

1

Query the sources index

Search for sources by name, language, country, or domain. At least one filter parameter is required. source_name performs a partial match — it returns any source whose name contains the search term. This example finds sources with “sport” in their name:
curl -X POST "https://v3-api.newscatcherapi.com/api/sources" \
  -H "x-api-token: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source_name": "sport",
    "include_additional_info": true
  }'
2

Review the response

The response returns a list of matching sources. The message field indicates when results are limited by your plan:
{
  "message": "Maximum sources displayed according to your plan is set to 1000",
  "sources": [
    {
      "name_source": "Sports Illustrated",
      "domain_url": "si.com",
      "logo": null,
      "additional_info": null
    },
    {
      "name_source": "Sportskeeda",
      "domain_url": "sportskeeda.com",
      "logo": null,
      "additional_info": null
    }
  ]
}
3

Check specific sources by domain

Use source_url to check whether specific domains are covered. Combine with other parameters to narrow results:
from newscatcher import NewscatcherApi

client = NewscatcherApi(api_key="YOUR_API_KEY")

# Check specific domains
response = client.sources.post(
    source_url=["si.com", "sportskeeda.com"],
    include_additional_info=True,
)

# Combine with other filters
response = client.sources.post(
    source_name="sport",
    lang="en",
    countries=["US", "GB", "AU"],
    include_additional_info=True,
)
For all available parameters, see the Sources endpoint reference.

Coverage check for large source lists

When you have thousands of domains to check, use the Python SDK’s async client to batch requests concurrently and identify which sources are not covered by News API. Set the NEWSCATCHER_API_KEY environment variable before running the script:
export NEWSCATCHER_API_KEY="YOUR_API_KEY"
The script does the following:
  1. Reads domain URLs from source_urls.csv (one URL per row, first column).
  2. Splits them into batches (BATCH_SIZE) and sends requests concurrently up to the MAX_CONCURRENT limit.
  3. Marks each domain as covered or uncovered based on the API response.
  4. Writes uncovered domains to uncovered_sources.csv.
You can send uncovered_sources.csv to support — News API can manually add sources that are missing from the index.

Best practices

  • Use source_name for broad discovery and source_url for precise coverage verification.
  • Set include_additional_info: true to get reliability and output volume metrics for each source.
  • Use from_rank and to_rank to filter sources by SEO rank when you only care about high-authority publications.
  • If you hit 429 errors, lower MAX_CONCURRENT to stay within your plan’s concurrency limits.

See also