IPTV-Org JSON API (channels, feeds, streams, EPG, categories)

Datadory delivers iptv org json api channels feeds streams epg categories data covering thirteen interlinked tables of linear-TV metadata: 41,085 channels with ownership chains and launch-closure-successor dates, 45,048 feeds with city-level broadcast areas, 16,778 streams, 43,413 logos and 180,681 EPG mappings. Delivered daily, weekly, or hourly.

What is the IPTV-Org JSON API?

The structured spine of linear television: thirteen interlinked tables holding 41,085 channels, 45,048 feeds, 16,778 streams, 43,413 logos and 180,681 EPG mappings - about 327,000 records that agree with one another. It is filed under Building Products because the catalog shelves by its own logic, with cable & satellite as a secondary home; worldwide television filed next to wall assemblies, and both shelves are defensible.

Each record type answers a different question about the same dial. Channels say what exists and who stands behind it: network, an owners array walked in ascending corporate order, country, categories, plus launch date, closure date and a named successor. Feeds say where and how a channel broadcasts - main-feed flags, broadcast areas resolvable down to individual cities, languages, video format. Streams attach endpoints with a quality label, logos attach brand assets, guide rows attach scheduling identifiers per EPG source.

It scores 9 out of 10 on Datadory's quality rubric, with field definitions verified against live records during cataloging - the top grade in this slice.

Get a sample of this dataset cut to your channels, markets or record types.

What do sample rows look like?

Five rows, five angles on the same registry, flat as they arrive in a delivery:

# CHANNELS - identity, ownership, lifecycle            (41,085 rows)
id              : 00sReplay.us
name            : 00s Replay
network         : Pluto TV
owners          : ["Pluto Inc.", "Paramount Skydance Corporation"]
country         : US
categories      : ["movies"]
is_nsfw         : false

# CHANNELS - thin row: name, maker, market only
id              : 002RadioTV.do
name            : 002 Radio TV
country         : DO
categories      : ["general"]

# FEEDS - where and how a channel broadcasts           (45,048 rows)
channel         : 002RadioTV.do
id              : SD
name            : SD
is_main         : true
broadcast_area  : ["c/DO"]
timezones       : ["America/Santo_Domingo"]
languages       : ["spa"]
format          : 480i

# STREAMS - playable endpoints with a quality label    (16,778 rows)
title           : TV Publica
quality         : 1080p
channel         : null        # some stream rows carry no channel link
feed            : null

# LOGOS - brand assets keyed to the channel            (43,413 rows)
channel         : 002RadioTV.do
in_use          : true
dimensions      : 334 x 210
format          : PNG

Three things worth reading out of those rows. First, the ownership chain arrives pre-walked - Pluto Inc. sits under Paramount Skydance Corporation, in ascending order - so an ownership rollup is a group-by rather than a research project. Second, depth varies by design: 00sReplay.us lands fully documented while 002 Radio TV carries name, market and genre only; both shapes are honest data, and collapsing them into one uniform width would be the actual error. Third, the honesty extends to broken links - some stream rows carry no channel or feed pointer at all, so any join downstream should be a left join, not an assumption.

What fields does the dataset include?

Twenty documented fields across six entity tables - channels, feeds, streams, logos, guide mappings and a blocklist - plus seven reference tables (countries with ISO 3166-1 codes and flags, subdivisions, cities carrying UN/LOCODE and Wikidata identifiers, regions, timezones, categories, and languages in ISO 639-3) that translate the coded columns into readable ones.

Identity and ownership fields say what a channel is and who stands behind it (id, name, alt_names, network, owners, country). The lifecycle trio (launched, closed, replaced_by) turns 41,085 listings into a genealogy - which brands persisted, which were retired, who absorbed whom. Feed fields carry the distribution facts (broadcast_area, is_main, languages, video format), and the stream, logo and guide fields resolve presentation, brand asset and scheduling context onto the same key.

Where does coverage reach across geography, time and granularity?

  • Geography: worldwide - roughly 250 countries represented, with feed scope resolving from region codes down through country and subdivision to individual city broadcast areas; a Dominican feed scoped c/DO in the sample rows is one notch above the finest cut.
  • Temporal: a current-state snapshot whose rows remember their own history - launch and closure dates and named successor chains ride on the channel record where known. There is no archive of past states behind the snapshot; longitudinal depth accrues from repeated deliveries at your cadence, each one diffing cleanly against the last.
  • Granularity: one row per record type - channel, feed, stream, logo, guide mapping, blocklist entry - all joined on the channel identifier. Finest cut is a single feed's broadcast area or video format; coarsest useful frame is a whole national channel population.

Scale check: 41,085 channels, 45,048 feeds, 16,778 streams, 43,413 logos and 180,681 EPG mappings, about 327,000 records before the reference tables are counted. Against Datadory's full catalog - 1,744 datasets across 159 viable industries averaging 7.81 on the quality rubric - this slice scores 9 out of 10, with field definitions verified against live records during cataloging.

How is the data delivered?

API, files, or your warehouse. Daily, weekly, or hourly.

Pick the channel your pipeline already speaks: structured lookups for enrichment-style checks, bulk extracts sized for overnight warehouse loads, or a direct pipe into Snowflake, BigQuery or Redshift. Cadence is yours to set and yours to change later - because the rows carry their own lifecycle dates, a recurring delivery doubles as the change history, each snapshot diffing against the last without deduplication logic. Every delivery ships with the full field dictionary and validation rows. Get a sample of this dataset cut to your channels, markets or record types before anything reaches production.

Who uses this data, and for what?

  • Media-ownership research - the owners array walks the corporate chain upward and network names the bundle a channel rides, so concentration studies start from typed columns instead of press clippings; pattern work like this sits on our competitor tracking use case page.
  • Distribution and availability audits - feed-level broadcast areas resolve from region down to city, so "does this channel reach this market" becomes a filter rather than a guess; sizing work continues on our market sizing use case page.
  • Product and app pipelines - channel-lineup joins for players, guide products and catalogs come pre-keyed: channel to feeds to logos to guide identifiers, in one schema rather than five reconciled ones; integration recipes on our API integration use case page.
  • Model training and record linkage - alternate names, categories, logo assets and NSFW flags make this a ready-made corpus for entity resolution and media-classification models; setups collected under our ML model training use case.

Which personas get the most value?

Competitive Intelligence & Product Teams get an ownership and succession map of the global dial - who owns what, which brands were retired into which successors, and where a rival's reach actually extends. Market Researchers & Consultants get a census-scale base for media-market sizing and availability studies across roughly 250 countries. Data Scientists & ML Engineers get typed columns with verified definitions and honest nulls, so ingestion is configuration rather than cleaning archaeology. Developers & Builders get the exact keys a guide product or player catalog consumes - channel to feed to logo to EPG site identifier - without reconciling five exports by hand.

How each persona wires this slice into daily work is expanded on the competitive intel and product teams, market researchers, data scientists and developers and builders building products pages.

How does it compare within building products data?

Two records share this publisher, and they answer different questions. This one is the structured metadata: ownership chains, broadcast areas, lifecycle dates, EPG mappings - everything you want to query. The IPTV-Org Global IPTV Channels Collection (M3U Playlists) is the playlist text: roughly 12,800 feed entries grouped by country, language and category - everything you want to load into a player. Metadata for analysis, playlists for playback, one join key between them.

Against the rest of the shelf, the contrast is sharper still. Certification registries like Declare document physical products; this documents distribution. The head-to-head is worked through in IPTV-Org JSON API vs Declare Building Product Ingredient Disclosure Database, and where everything sits see the best building products datasets ranking or the pooled building products data hub.

Which notes pair with this dataset?

Notes and neighbors that pair well with this page:

Field dictionary - twenty documented fields across six entity tables (full dictionary with examples delivered with your sample)

FieldTypeDefinitionExample
idstringChannel identifier and join spine; formatted Name.countrycode.00sReplay.us
namestringFull channel name.00s Replay
alt_namestextAlternative channel names, including former names after rebrands.["Canal 002"]
networkstringNetwork or bundle the channel belongs to, or null.Pluto TV
ownerstextOwner entities listed in ascending corporate chain.["Pluto Inc.", "Paramount Skydance Corporation"]
countrystringISO 3166-1 alpha-2 country of the channel.US
categoriestextCategory identifiers assigned to the channel.["movies"], ["general"]
is_nsfwbooleanWhether the channel is adult-oriented.false
launcheddateLaunch date YYYY-MM-DD where known, else null.2020-05-11
closeddateClosure date YYYY-MM-DD, or null while still operating.null
replaced_bystringIdentifier of the successor channel, or null.newsNation.us
broadcast_areatextFeed-level scope codes: region, country, subdivision or city.["c/DO"]
is_mainbooleanWhether this feed is the channel's main feed.true
languagestextISO 639-3 language codes of the broadcast.["spa"]
formatstringVideo format standard of the feed.480i, 576i, 1080i
qualitystringQuality label attached to a stream row.1080p
user_agent, referrerstringPlayback header requirements attached to a stream, or null.user_agent: "okhttp/4.x"
in_usebooleanWhether a logo is currently carried on a distribution playlist.true
site_idstringChannel identifier on the EPG source named by the guide row.002RadioTV.do
reasonenumBlocklist cause recorded for a removed channel.dmca | nsfw

Coverage chips - geography, time, granularity

dimensioncoverage
GeographicWorldwide - roughly 250 countries at channel level; feed scope resolves from region codes down to subdivision and city broadcast areas
TemporalCurrent-state snapshot with historical lifecycle dates (launched, closed, replaced_by) preserved on rows where known; no archive of past states - history accrues from repeated deliveries
GranularityOne row per record type - channel, feed, stream, logo, guide mapping, blocklist entry - joined on the channel identifier

Scale snapshot - what one full pull contains

measurevalue
Interlinked tables13 (six entity tables plus seven reference tables)
Channels41,085
Feeds45,048
Streams16,778
Logos43,413
EPG guide mappings180,681
Countries referenced~250

Questions buyers ask

What is the IPTV-Org JSON API dataset?

A structured read of the community-maintained IPTV channel registry: thirteen interlinked tables covering 41,085 channels, 45,048 feeds, 16,778 streams, 43,413 logos and 180,681 EPG mappings, joined on a single channel identifier. Each channel carries ownership chains, country, categories, adult-content flags and launch, closure and successor dates.

Can channels be joined to feeds, streams, logos and EPG mappings?

Yes - that is the design. The channel identifier is the join spine: feeds point back at it, streams and logos key on it, guide mappings key on channel plus feed, and the blocklist keys on it too. One honest caveat from the sample rows: some stream rows carry null channel and feed pointers, so treat stream joins as left joins rather than assumptions.

Does the dataset show who owns each channel?

Yes. Each channel record names its network and lists owner entities in ascending corporate order - the sampled Pluto TV channel resolves to Pluto Inc. under Paramount Skydance Corporation. Rollups by ultimate parent are therefore a group-by, and succession chains via replaced_by let you follow a retired brand into its absorbing successor.

Are closed or replaced channels kept in the registry?

They are kept and dated. Launched and closed dates ride on the channel record where known, and replaced_by names the successor, so closures become genealogy rather than deletions. Rows with unknown dates arrive as explicit nulls instead of blanks, which keeps the missingness measurable in your own validation pass.

How fine is the geographic coverage?

Worldwide, in tiers. Roughly 250 countries appear at channel level, while each feed declares broadcast areas using codes for regions, countries, subdivisions and cities - a feed scoped to the Dominican Republic at country level is one tier above the finest cut. Reference tables translate the codes into readable names, flags and identifiers.

How fresh is iptv org json api channels feeds streams epg categories data?

As fresh as your cadence. Datadory delivers it daily, weekly or hourly - your call - and because every row carries its own lifecycle dates, successive deliveries accumulate into a change history the snapshot alone does not keep. Historical launch and closure dates are fixed facts on the record rather than moving values.

Can I evaluate the rows before committing to a feed?

Yes, and that is the intended order. Name the channels, markets, categories or record types you care about, and a sample comes back shaped to that scope - real rows, full field dictionary and validation fill-rate figures included - so your first join happens against evidence rather than optimism.

See the rows before you pay anything.

Name this dataset and we send real records from it — scoped to the fields you asked for.

See pricing