BYTETOOLS

IPTV-org API

Free IPTV-org API with no key: 10,000+ TV channels worldwide with countries, languages, categories, logos and stream metadata as static JSON. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 19 Aug 2026

What is the IPTV-org API?

IPTV-org publishes a free, key-free API of global television channel metadata — more than 10,000 channels with country, language, category, logo and broadcast information — served as static JSON files.

IPTV-org is a community project cataloguing publicly available television channels worldwide. The API is a set of static JSON files on GitHub Pages, which means it is extremely fast, has no rate limit, and never goes down under load.

Because the files are static and complete, the usual pattern is to fetch once and filter locally rather than making repeated requests. There are separate files for channels, countries, languages, categories and streams, designed to be joined client-side.

Quick facts

Base URL
https://iptv-org.github.io/api
Authentication
No API key required — these are static JSON files.
Rate limit
None; served as static files from a CDN.
Pricing
Free and open source.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the IPTV-org API

Every request below was executed against the live API on 19 Aug 2026, and the response shown is the real body it returned — not an illustration.

1. Fetch the list of countries

GET https://iptv-org.github.io/api/countries.json

curl
curl 'https://iptv-org.github.io/api/countries.json'
JavaScript (fetch)
const res = await fetch("https://iptv-org.github.io/api/countries.json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://iptv-org.github.io/api/countries.json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  {
    "name": "Afghanistan",
    "code": "AF",
    "languages": [
      "pus",
      "prd",
      "tuk"
    ],
    "flag": "🇦🇫"
  },
  {
    "name": "Aland",
    "code": "AX",
    "languages": [
      "swe"
    ],
    "flag": "🇦🇽"
  },
  {
    "name": "Albania",
    "code": "AL",
    "languages": [
      "sqi"
    ],
    "flag": "🇦🇱"
  },
  {
    "name": "Algeria",
    "code": "DZ",
    "languages": [
      "ara"
    ],
    "flag": "🇩🇿"
  },
  {
    "name": "American Samoa",
    "code": "AS",
    "languages": [
      "eng",
      "smo"
    ],
    "flag": "🇦🇸"
  },
  {
    "name": "Andorra",
    "code": "AD",
    "languages": [
      "cat"
    ],
    "flag": "🇦🇩"
  },
  {
    "name": "Angola",
    "code": "AO",
    "languages": [
      "por"
    ],
    "flag": "🇦🇴"
  },
  {
    "name": "Anguilla",
    "code": "AI",
    "languages": [
      "eng"
    ],
    "flag": "🇦🇮"
  },
  {
    "name": "Antarctica",
    "code": "AQ",
    "languages": [
      "eng"
    ],
    "flag": "🇦🇶"
  },
  {
    "name": "Antigua and Barbuda",
    "code": "AG",
    "languages": [
      "eng"
    ],
    "flag": "🇦🇬"
  },
  {
    "name": "Argentina",
    "code": "AR",
    "languages": [
      "grn",
      "spa"
    ],
    "flag": "🇦🇷"
  },
  {
    "name": "Armenia",
    "code": "AM",
    "languages": [
      "hye"
    ],
    "flag": "🇦🇲"
  },
  {
    "name": "Aruba",
    "code": "AW",
    "languages": [
      "nld",
      "pap"
    ],
    "flag": "🇦🇼"
  },
  {
    "name": "Australia",
    "code": "AU",
    "languages": [
      "eng"
    ],
    "flag": "🇦🇺"
  },
  {
    "name": "Austria",
    "code"

Parameters

ParameterTypeRequiredDescription
countries.jsonpathOptionalAll countries with codes, languages and flags. countries.json
channels.jsonpathOptionalEvery catalogued channel with metadata. channels.json
categories.jsonpathOptionalChannel categories such as news or sports. categories.json
streams.jsonpathOptionalStream URLs mapped to channel ids. streams.json

Response fields

namestring
Country or channel name.
codestring
ISO country code.
languagesarray
ISO 639-3 language codes.
flagstring
Flag emoji for the country.
(channels.json) idstring
Channel identifier used to join with streams.
(channels.json) categoriesarray
Category slugs for the channel.
(channels.json) logostring
Channel logo image URL.

What you can build with the IPTV-org API

  • Build a TV channel directory filtered by country or language
  • Create an IPTV player interface with channel logos
  • Analyse global broadcast media by category and region
  • Join channel metadata with stream URLs for a media app

Common errors and how to fix them

Large file downloads

channels.json contains every channel worldwide.

Fix: Fetch once and cache; filter locally rather than re-requesting.

Streams not matching channels

Streams and channels are separate files joined by id.

Fix: Join streams.json to channels.json on the channel id field.

Dead stream URLs

Streams are community-contributed and go offline.

Fix: Validate before playing, and handle failure gracefully.

IPTV-org API — frequently asked questions

Is the IPTV-org API free?

Yes, completely free and open source. It is served as static JSON files with no key and no rate limit.

How many channels are catalogued?

Over 10,000 from around the world, each with country, language, category and logo metadata.

How do I get stream URLs for a channel?

Streams live in a separate streams.json file, joined to channels by the channel id. Note that stream availability is community-maintained and varies.

Is it legal to use the streams?

IPTV-org catalogues publicly available streams, but legality depends on the broadcaster and your jurisdiction. The metadata API itself is uncontroversial; verify rights before redistributing any stream.

Tools that pair with this API

Alternatives to IPTV-org API

If IPTV-org does not fit, these video & streaming apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
TVmazeFree TV show API with no key: series info, full episode guides, cast, air dates and daily schedules with images. Genuinely open, no signup. Tested example.No keyYes19 Aug 2026
NoembedFree oEmbed proxy API with no key: get embed HTML, thumbnails and metadata for YouTube, Vimeo, Twitter and 200+ other sites from one endpoint. Tested.No keyYes19 Aug 2026
YouTube oEmbedFree YouTube oEmbed endpoint with no API key: video title, author, thumbnail and embed HTML from any video URL. No quota, unlike the Data API. Tested.No keyNo20 Aug 2026
DailymotionFree Dailymotion API with no key for public data: search videos, channels and playlists with views, duration, thumbnails and embed URLs. Tested example.No keyYes20 Aug 2026
API One PieceA free One Piece API with no key: characters with bounties and crews, Devil Fruits, boats, sagas and episodes, available in several languages. Tested example included.No keyYes21 Aug 2026
Owen Wilson WowA free API cataloguing every 'wow' Owen Wilson has said on film, with movie, year, director, exact timestamp, full line and hosted video and audio clips. Live example included.No keyYes21 Aug 2026
All Video & Streaming APIs

IPTV-org is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 19 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.