Kagi News displays contextual information about each article’s source — such as the outlet’s country, ownership structure, and whether it is publicly funded or state-controlled. This metadata is stored inDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/kagisearch/kite-public/llms.txt
Use this file to discover all available pages before exploring further.
media_data.json, a community-editable database that covers thousands of news domains. Contributing to this file helps readers make more informed judgements about the sources they are reading.
Source metadata is shown in the Kagi News app when you hover or click on a source name. Keeping this data accurate and complete helps users understand the editorial context and potential biases of each outlet.
Data source and methodology
The initial dataset was sourced from State Media Monitor, an independent research project that classifies news outlets by ownership and editorial independence. The classification methodology — which defines terms like “State-Funded” and “State-Controlled” — is documented at statemediamonitor.com/methodology.Refer to the State Media Monitor methodology for guidance on how to classify a news outlet’s typology. It provides clear definitions for each category and criteria for distinguishing between editorially independent public media and state-controlled outlets.
Entry structure
Each record inmedia_data.json is a JSON object in a top-level array. Here is the structure with a real example:
| Field | Description |
|---|---|
country | Full country name or ISO 3166-1 alpha-2 code where the organisation is based (e.g. "France", "GB"). Leave as an empty string if unknown. |
organization | The name of the media organisation. |
domains | An array of domain names associated with the organisation (e.g. ["bbc.com", "bbc.co.uk"]). Must contain at least one entry. No duplicates across records. |
description | A factual summary of the organisation: what it covers, when it was founded, how it is funded, and any notable characteristics. |
owner | A description of who owns or controls the organisation. |
typology | A classification label drawn from the State Media Monitor methodology. |
Typology values
Thetypology field classifies the editorial and ownership structure of the outlet. Common values used in the dataset include:
| Typology | Meaning |
|---|---|
Private Independent Media | Privately owned with no significant state involvement or influence |
Private Media | Privately owned (ownership independence not fully verified) |
Public | Publicly funded with editorial independence from the state |
State-Funded | Receives significant public funding but retains some editorial independence |
State-Controlled | Editorially directed or heavily influenced by the state |
Contributing to media_data.json
Find an existing entry or create a new one
Search
media_data.json for the organisation you want to update. If it is already present, locate the record and note any fields that are missing or incorrect. If the organisation is not yet in the file, you will add a new JSON object to the array.Fill in all required fields
Every record must include
country, organization, domains, description, owner, and typology. The validation script (scripts/validate-media.ts) will flag any record that is missing a required field or has a duplicate domain.- Use an accurate, full domain name (e.g.
"bbc.co.uk"— not"www.bbc.co.uk"). - Write
descriptionandowneras neutral, factual prose. - Choose the most accurate
typologylabel based on the State Media Monitor methodology.
Run the validation script
Before submitting your changes, run the media validator to catch missing fields and duplicate domains:The script also cross-references domains in
media_data.json against feed URLs added in your current branch and warns about any domains that appear in kite_feeds.json but are not yet represented in media_data.json.Submit a pull request with sources
Open a pull request with your changes. In the PR description, include links to the sources you used to determine the
typology, owner, and other classification fields. This is especially important for state-funded or state-controlled classifications, which can be contested.Validation script reference
scripts/validate-media.ts performs the following checks on media_data.json:
| Check | Behaviour |
|---|---|
Missing required field (country, organization, domains, description, owner, typology) | Printed to stderr |
Empty domains array | Printed to stderr |
| Duplicate domain across records | Printed to stderr |
Domain in kite_feeds.json (added in current branch) not present in media_data.json | Advisory warning printed to stderr |
0 in all cases — it is advisory and will not block a PR. However, addressing the warnings before submitting keeps the dataset consistent.