├── .github
└── FUNDING.yml
├── LICENSE
├── CHANGELOG.md
└── README.md
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: iptv-org
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
13 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | This is free and unencumbered software released into the public domain.
2 |
3 | Anyone is free to copy, modify, publish, use, compile, sell, or
4 | distribute this software, either in source code form or as a compiled
5 | binary, for any purpose, commercial or non-commercial, and by any
6 | means.
7 |
8 | In jurisdictions that recognize copyright laws, the author or authors
9 | of this software dedicate any and all copyright interest in the
10 | software to the public domain. We make this dedication for the benefit
11 | of the public at large and to the detriment of our heirs and
12 | successors. We intend this dedication to be an overt act of
13 | relinquishment in perpetuity of all present and future rights to this
14 | software under copyright law.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 | OTHER DEALINGS IN THE SOFTWARE.
23 |
24 | For more information, please refer to
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | ## 2025-08-30
4 |
5 | - **channels**: removed `subdivision` and `city` fields
6 |
7 | ## 2025-08-20
8 |
9 | - added **cities.json**
10 | - **subdivisions**: added `parent` field
11 |
12 | ## 2025-07-30
13 |
14 | - **channels**: removed `logo` field
15 | - **feeds**: added `alt_names` field
16 | - **streams**: added `title` field
17 | - **categories**: added `description` field
18 |
19 | ## 2025-07-02
20 |
21 | - added **logos.json**
22 |
23 | ## 2025-04-07
24 |
25 | - added **feeds** and **timezones**
26 | - **channels**: removed `broadcast_area` and `languages` fields
27 | - **streams**: added `feed` and `quality` fields, renamed `http_referrer` field to `referrer`, removed `timeshift` field
28 | - **guides**: added `feed` field
29 |
30 | ## 2025-03-05
31 |
32 | - **streams**: `channel` field now returns `null` if no value is specified
33 | - **blocklist**: added `reason` field
34 |
35 | ## 2023-12-03
36 |
37 | - **guides**: `channel` field now returns `null` if no value is specified
38 |
39 | ## 2023-11-17
40 |
41 | - **guides**: added updated list of guides
42 |
43 | ## 2023-10-09
44 |
45 | - **guides**: removed from the list as the data is no longer being updated
46 |
47 | ## 2023-05-04
48 |
49 | - **guides**: the `status`, `width`, `height`, `bitrate`, `frame_rate`, `added_at`, `updated_at` and `checked_at` fields were removed (https://github.com/iptv-org/iptv/pull/12628)
50 |
51 | ## 2022-10-19
52 |
53 | - **channels**: `native_name` field renamed to `alt_names`
54 |
55 | ## 2022-10-17
56 |
57 | - **channels**: added `owners` field
58 |
59 | ## 2022-06-09
60 |
61 | - **streams**: added `frame_rate` field
62 |
63 | ## 2022-04-21
64 |
65 | - **channels:** added `replaced_by` field
66 |
67 | ## 2022-04-12
68 |
69 | - **channels:** added `launched` and `closed` fields
70 |
71 | ## 2022-03-01
72 |
73 | - **channels:** added `native_name` field
74 |
75 | ## 2022-02-21
76 |
77 | - added **streams.json**
78 | - **channels:** added `website` field
79 |
80 | ## 2022-02-16
81 |
82 | - added **blocklist.json**
83 |
84 | ## 2022-01-29
85 |
86 | - **channels**: added `network` field
87 |
88 | ## 2022-01-25
89 |
90 | - **channels**: added the `subdivision` and `city` field
91 | - **categories**: removed `local` category
92 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # API
2 |
3 | ## Overview
4 |
5 | - [Channels](#channels)
6 | - [Feeds](#feeds)
7 | - [Logos](#logos)
8 | - [Streams](#streams)
9 | - [Guides](#guides)
10 | - [Categories](#categories)
11 | - [Languages](#languages)
12 | - [Countries](#countries)
13 | - [Subdivisions](#subdivisions)
14 | - [Cities](#cities)
15 | - [Regions](#regions)
16 | - [Timezones](#timezones)
17 | - [Blocklist](#blocklist)
18 |
19 | ### Channels
20 |
21 | ```
22 | https://iptv-org.github.io/api/channels.json
23 | ```
24 |
25 | ```jsonc
26 | [
27 | //...
28 | {
29 | "id": "AnhuiTV.cn",
30 | "name": "Anhui TV",
31 | "alt_names": ["安徽卫视"],
32 | "network": "Anhui",
33 | "owners": ["China Central Television"],
34 | "country": "CN",
35 | "categories": ["general"],
36 | "is_nsfw": false,
37 | "launched": "2016-07-28",
38 | "closed": "2020-05-31",
39 | "replaced_by": "CCTV1.cn",
40 | "website": "http://www.ahtv.cn/"
41 | }
42 | //...
43 | ]
44 | ```
45 |
46 | | Field | Type | Description |
47 | | ----------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------- |
48 | | id | string | Unique channel ID |
49 | | name | string | Full name of the channel |
50 | | alt_names | array | List of alternative channel names |
51 | | network | string or null | Name of the network operating the channel |
52 | | owners | array | List of channel owners |
53 | | country | string | Country code from which the broadcast is transmitted ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)) |
54 | | categories | array | List of categories to which this channel belongs |
55 | | is_nsfw | boolean | Indicates whether the channel broadcasts adult content |
56 | | launched | string or null | Launch date of the channel (`YYYY-MM-DD`) |
57 | | closed | string or null | Date on which the channel closed (`YYYY-MM-DD`) |
58 | | replaced_by | string or null | The ID of the channel that this channel was replaced by |
59 | | website | string or null | Official website URL |
60 |
61 | Source of data: https://github.com/iptv-org/database
62 |
63 | ### Feeds
64 |
65 | ```
66 | https://iptv-org.github.io/api/feeds.json
67 | ```
68 |
69 | ```jsonc
70 | [
71 | //...
72 | {
73 | "channel": "France3.fr",
74 | "id": "ParisIledeFrance",
75 | "name": "Paris Ile-de-France",
76 | "alt_names": ["Paris Île-de-France"],
77 | "is_main": false,
78 | "broadcast_area": ["c/FR"],
79 | "timezones": ["Europe/Paris"],
80 | "languages": ["fra"],
81 | "format": "576i"
82 | }
83 | //...
84 | ]
85 | ```
86 |
87 | | Field | Type | Description |
88 | | -------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- |
89 | | channel | string | Channel ID |
90 | | id | string | Unique feed ID |
91 | | name | string | Name of the feed |
92 | | alt_names | array | List of alternative feed names |
93 | | is_main | boolean | Indicates if this feed is the main for the channel |
94 | | broadcast_area | array | List of codes describing the broadcasting area (`r/`, `c/`, `s/`, `ct/`) |
95 | | timezones | array | List of timezones in which the feed is broadcast |
96 | | languages | array | List of broadcast languages |
97 | | format | string | Video format of the feed |
98 |
99 | Source of data: https://github.com/iptv-org/database
100 |
101 | ### Logos
102 |
103 | ```
104 | https://iptv-org.github.io/api/logos.json
105 | ```
106 |
107 | ```jsonc
108 | [
109 | //...
110 | {
111 | "channel": "France3.fr",
112 | "feed": "ParisIledeFrance",
113 | "tags": ["horizontal", "white"],
114 | "width": 1000,
115 | "height": 468,
116 | "format": "SVG",
117 | "url": "https://example.com/logo.svg"
118 | }
119 | //...
120 | ]
121 | ```
122 |
123 | | Field | Type | Description |
124 | | ------- | -------------- | -------------------------------------------------------------------------- |
125 | | channel | string | Channel ID |
126 | | feed | string or null | Feed ID |
127 | | tags | array | List of keywords describing this version of the logo |
128 | | width | number | The width of the image in pixels |
129 | | height | number | The height of the image in pixels |
130 | | format | string or null | Image format (one of: `PNG`, `JPEG`, `SVG`, `GIF`, `WebP`, `AVIF`, `APNG`) |
131 | | url | string | Logo URL |
132 |
133 | Source of data: https://github.com/iptv-org/database
134 |
135 | ### Streams
136 |
137 | ```
138 | https://iptv-org.github.io/api/streams.json
139 | ```
140 |
141 | ```jsonc
142 | [
143 | //...
144 | {
145 | "channel": "France3.fr",
146 | "feed": "NordPasdeCalaisHD",
147 | "title": "France 3 Nord Pas-de-Calais HD",
148 | "url": "http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8",
149 | "referrer": "http://example.com/",
150 | "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
151 | "quality": "720p"
152 | }
153 | //...
154 | ]
155 | ```
156 |
157 | | Field | Type | Description |
158 | | ---------- | -------------- | -------------------------------------------------------------------------------------------------------------------- |
159 | | channel | string or null | Channel ID |
160 | | feed | string or null | Feed ID |
161 | | title | string | Stream title |
162 | | url | string | Stream URL |
163 | | referrer | string or null | The [Referer](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer) request header for the stream |
164 | | user_agent | string or null | The [User-Agent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) request header for the stream |
165 | | quality | string or null | Maximum stream quality |
166 |
167 | Source of data: https://github.com/iptv-org/iptv
168 |
169 | ### Guides
170 |
171 | ```
172 | https://iptv-org.github.io/api/guides.json
173 | ```
174 |
175 | ```jsonc
176 | [
177 | //...
178 | {
179 | "channel": "BBCOne.uk",
180 | "feed": "EastMidlandsHD",
181 | "site": "sky.co.uk",
182 | "site_id": "bbcone",
183 | "site_name": "BBC One",
184 | "lang": "en"
185 | }
186 | //...
187 | ]
188 | ```
189 |
190 | | Field | Type | Description |
191 | | --------- | -------------- | --------------------------------------------------------------------------------- |
192 | | channel | string or null | Channel ID |
193 | | feed | string or null | Feed ID |
194 | | site | string | Site domain name |
195 | | site_id | string | Unique channel ID used on the site |
196 | | site_name | string | Channel name used on the site |
197 | | lang | string | Language of the guide ([ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) code) |
198 |
199 | Source of data: https://github.com/iptv-org/epg
200 |
201 | ### Categories
202 |
203 | ```
204 | https://iptv-org.github.io/api/categories.json
205 | ```
206 |
207 | ```jsonc
208 | [
209 | //...
210 | {
211 | "id": "documentary",
212 | "name": "Documentary",
213 | "description": "Programming that depicts a person or real-world event"
214 | }
215 | //...
216 | ]
217 | ```
218 |
219 | | Field | Type | Description |
220 | | ----------- | ------ | --------------------------------- |
221 | | id | string | Category ID |
222 | | name | string | Name of the category |
223 | | description | string | Short description of the category |
224 |
225 | Source of data: https://github.com/iptv-org/database
226 |
227 | ### Languages
228 |
229 | ```
230 | https://iptv-org.github.io/api/languages.json
231 | ```
232 |
233 | ```jsonc
234 | [
235 | //...
236 | {
237 | "name": "French",
238 | "code": "fra"
239 | }
240 | //...
241 | ]
242 | ```
243 |
244 | | Field | Type | Description |
245 | | ----- | ------ | ------------------------------------------------------------------------- |
246 | | name | string | Language name |
247 | | code | string | [ISO 639-3](https://en.wikipedia.org/wiki/ISO_639-3) code of the language |
248 |
249 | Source of data: https://github.com/iptv-org/database
250 |
251 | ### Countries
252 |
253 | ```
254 | https://iptv-org.github.io/api/countries.json
255 | ```
256 |
257 | ```jsonc
258 | [
259 | //...
260 | {
261 | "name": "Canada",
262 | "code": "CA",
263 | "languages": ["eng", "fra"],
264 | "flag": "🇨🇦"
265 | }
266 | //...
267 | ]
268 | ```
269 |
270 | | Field | Type | Description |
271 | | --------- | ------ | ----------------------------------------------------------------------------------------------------- |
272 | | name | string | Name of the country |
273 | | code | string | [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code of the country |
274 | | languages | array | List of official languages of the country ([ISO 639-3](https://en.wikipedia.org/wiki/ISO_639-3) code) |
275 | | flag | string | Country flag emoji |
276 |
277 | Source of data: https://github.com/iptv-org/database
278 |
279 | ### Subdivisions
280 |
281 | ```
282 | https://iptv-org.github.io/api/subdivisions.json
283 | ```
284 |
285 | ```jsonc
286 | [
287 | //...
288 | {
289 | "country": "BD",
290 | "name": "Bandarban",
291 | "code": "BD-01",
292 | "parent": "BD-B"
293 | }
294 | //...
295 | ]
296 | ```
297 |
298 | | Field | Type | Description |
299 | | ------- | -------------- | ------------------------------------------------------------------------------------------ |
300 | | country | string | [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code of the country |
301 | | name | string | Subdivision name |
302 | | code | string | [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) code of the subdivision |
303 | | parent | string or null | [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) code of the parent subdivision |
304 |
305 | Source of data: https://github.com/iptv-org/database
306 |
307 | ### Cities
308 |
309 | ```
310 | https://iptv-org.github.io/api/cities.json
311 | ```
312 |
313 | ```jsonc
314 | [
315 | //...
316 | {
317 | "country": "CN",
318 | "subdivision": "CN-SD",
319 | "name": "Yantai",
320 | "code": "CNYAT",
321 | "wikidata_id": "Q210493"
322 | }
323 | //...
324 | ]
325 | ```
326 |
327 | | Field | Type | Description |
328 | | ----------- | -------------- | -------------------------------------------------------------------------------------------------------------------- |
329 | | country | string | [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code of the country where the city is located |
330 | | subdivision | string or null | [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) code of the subdivision where the city is located |
331 | | name | string | City name |
332 | | code | string | [UN/LOCODE](https://en.wikipedia.org/wiki/UN/LOCODE) of the city |
333 | | wikidata_id | string | ID of this city in [Wikidata](https://www.wikidata.org/wiki/Wikidata:Main_Page) |
334 |
335 | Source of data: https://github.com/iptv-org/database
336 |
337 | ### Regions
338 |
339 | ```
340 | https://iptv-org.github.io/api/regions.json
341 | ```
342 |
343 | ```jsonc
344 | [
345 | //...
346 | {
347 | "code": "MAGHREB",
348 | "name": "Maghreb",
349 | "countries": ["DZ", "LY", "MA", "MR", "TN"]
350 | }
351 | //...
352 | ]
353 | ```
354 |
355 | | Field | Type | Description |
356 | | --------- | ------ | ------------------------------- |
357 | | code | string | Code of the region |
358 | | name | string | Full name of the region |
359 | | countries | array | List of countries in the region |
360 |
361 | Source of data: https://github.com/iptv-org/database
362 |
363 | ### Timezones
364 |
365 | ```
366 | https://iptv-org.github.io/api/timezones.json
367 | ```
368 |
369 | ```jsonc
370 | [
371 | //...
372 | {
373 | "id": "Europe/London",
374 | "utc_offset": "+00:00",
375 | "countries": ["UK", "GG", "IM", "JE"]
376 | }
377 | //...
378 | ]
379 | ```
380 |
381 | | Field | Type | Description |
382 | | ---------- | ------ | ------------------------------------------------------------------------- |
383 | | id | string | Timezone ID from [tz database](https://en.wikipedia.org/wiki/Tz_database) |
384 | | utc_offset | string | [UTC offset](https://en.wikipedia.org/wiki/UTC_offset) for this time zone |
385 | | countries | array | List of countries included in this time zone |
386 |
387 | Source of data: https://github.com/iptv-org/database
388 |
389 | ### Blocklist
390 |
391 | ```
392 | https://iptv-org.github.io/api/blocklist.json
393 | ```
394 |
395 | ```jsonc
396 | [
397 | //...
398 | {
399 | "channel": "AnimalPlanetEast.us",
400 | "reason": "dmca",
401 | "ref": "https://github.com/iptv-org/iptv/issues/1831"
402 | }
403 | //...
404 | ]
405 | ```
406 |
407 | | Field | Type | Description |
408 | | ------- | ------ | ----------------------------------------------- |
409 | | channel | string | Channel ID |
410 | | reason | string | Reason for blocking (`dmca` or `nsfw`) |
411 | | ref | string | Link to removal request or DMCA takedown notice |
412 |
413 | Source of data: https://github.com/iptv-org/database
414 |
415 | ## Contribution
416 |
417 | If you find a bug or want to contribute to the code or documentation, you can help by submitting an [issue](https://github.com/iptv-org/api/issues) or a [pull request](https://github.com/iptv-org/api/pulls).
418 |
--------------------------------------------------------------------------------