Why IPTV needs EPG
Electronic Program Guide is a key element of user experience in IPTV. Without EPG, viewers only see a channel number without knowing what's on.
Navigation
Search for shows by genre and time
Information
Descriptions, actors, ratings
Features
Reminders, recording timers, catch-up
Recommendations
Personalization based on metadata
EPG data sources
Option 1: Collect yourself
Negotiate with each broadcaster, receive data in different formats, normalize.
- • Editorial team for data processing
- • Develop parsers for each format
- • Contracts with each broadcaster
- • 6-12 months to launch
Option 2: EPG aggregator (recommended)
Connect to a ready-made service via API. EPG Service provides:
- ✓ 4308 channels in unified format
- ✓ Real-time updates
- ✓ Metadata: genres, actors, posters
- ✓ Launch in 2 weeks
Formats for IPTV
XMLTV — classic format
Supported by most IPTV middleware: Ministra (Stalker), Xtream Codes, MyTV Online and others.
<?xml version="1.0" encoding="UTF-8"?>
<tv>
<channel id="channel1">
<display-name>Channel One</display-name>
<icon src="https://example.com/logo.png"/>
</channel>
<programme start="20260206180000 +0300" stop="20260206183000 +0300" channel="channel1">
<title>Evening News</title>
<desc>Daily news program</desc>
<category>News</category>
<icon src="https://example.com/poster.jpg"/>
</programme>
</tv> JSON API — modern approach
For custom applications and modern middleware, REST API with JSON is recommended:
// Fetch schedule via EPG Service API
const response = await fetch(
'https://api.epgservice.ru/v1/schedules?channel_id=channel1&date=2026-02-06',
{ headers: { 'Authorization': 'Bearer API_KEY' } }
);
const data = await response.json();
// { channel: {...}, events: [...] } Step-by-step integration
Get access to data
Write to our Telegram bot and get an API key in 1 minute. Free tier for development.
Map channels
Link channel IDs in your system with EPG channel IDs. Usually matching by tvg-id in m3u playlists is sufficient.
Configure import
Specify XMLTV URL in middleware or implement data retrieval via JSON API.
Verify display
Make sure the schedule displays correctly, time is accurate, descriptions and posters load.
Channel mapping example:
{
"your_channel_id": "ch001",
"epg_channel_id": "channel1",
"name": "Channel One"
} Common issues and solutions
Issue: EPG not displaying
Cause: Channel IDs in EPG and playlist don't match.
Solution: Check tvg-id in m3u and channel id in XMLTV.
Issue: Wrong time
Cause: Incorrect timezone in data or on device.
Solution: EPG Service returns time in UTC+3 (Moscow). Check timezone settings in middleware.
Issue: No posters
Cause: Middleware doesn't process <icon> tag in XMLTV.
Solution: Use JSON API or update middleware.
Best practices
Need help with integration?
EPG Service team will help set up integration for free. Get consultation and test access to API.
Contact team