REST API v1
Read the public Cyberpunk Hub archive with ordinary HTTP requests. The API covers watch, play, and read records and returns UTF-8 JSON.
No account or API key is required. Cross-origin requests are allowed. Start with a small page and follow the pagination link when one is returned.
Base URL
https://cyberpunkhub.com/api/v1
01Quick start
This request returns up to 20 films released in 1987. Replace
watch with play or read to query
another section.
curl "https://cyberpunkhub.com/api/v1/watch?category=films&year=1987&limit=20"
A successful collection request returns a JSON array. No matches is also
successful and returns an empty array: [].
02Endpoints
GET /latest-
Up to 25 recently updated records from each section, grouped under
watch,read, andplay. It accepts no query parameters. GET /watch- Films, series, animation, documentaries, and short films.
GET /play- Games, including genre, platform, developer, and publisher data.
GET /read- Books, comics, stories, publications, and audiobooks.
03Filtering and pagination
All filters are optional. Multiple filters are joined with
AND. Text filters are partial matches, fixed-value
filters are exact matches, and rating is a minimum. Query
values must be URL encoded.
Available on watch, play, and read
name- Partial title, 2 to 200 characters.
year- Whole number from 1870 to 2100.
rating- Minimum rating from 1 to 10. Decimals such as
7.5are valid. limit- Records per page, from 1 to 100. A value such as
25is recommended. offset- Records to skip, from 0 to 1,000,000. It can only be used with
limit.
Omitting limit preserves the original v1 behaviour and
returns every matching record. That can produce a large response; new
integrations should paginate.
Moving to the next page
GET /api/v1/watch?genre=science_fiction&limit=25 Link: </api/v1/watch?genre=science_fiction&limit=25&offset=25>; rel="next" X-Result-Count: 25
A paginated response includes X-Result-Count. When another
page exists, the standard Link response header supplies its
URL with rel="next". The absence of that link means the
current page is the last one.
04/watch
Search screen media by title details, people, category, or genre.
Section filters
category- Exact category value.
genre- Exact genre value contained in the record.
imdb_id- IMDb title ID in the form
tt1234567ortt12345678. cast- Partial cast text, 2 to 255 characters.
director- Partial director name, 2 to 100 characters.
studio- Partial studio name, 2 to 100 characters.
country- Partial country name, 2 to 100 characters.
Examples
GET /api/v1/watch?name=blade%20runner&limit=20 GET /api/v1/watch?category=films&director=verhoeven&limit=20 GET /api/v1/watch?genre=science_fiction&rating=7.5&limit=20 GET /api/v1/watch?imdb_id=tt0093870
Open an example watch response
Category values
films— Filmsseries— Seriesdocumentaries— Documentariesshort_films— Short Filmsanimation_anime— Animation & Anime
Genre values
action— Actionadventure— Adventurebiography— Biographycomedy— Comedycrime— Crimedrama— Dramafamily— Familyfantasy— Fantasyfilm_noir— Film Noirgame_show— Game Showhistory— Historyhorror— Horrormusic— Musicmusical— Musicalmystery— Mysterynews— Newsreality_tv— Reality TVromance— Romancescience_fiction— Science Fictionsport— Sporttalk_show— Talk Showthriller— Thrillerwar— Warwestern— Western
05/play
Search games by title details, genre, platform, or publisher data.
Section filters
genre- Exact genre value contained in the record.
platform- Exact platform value associated with the game.
igdb_slug- Partial IGDB slug, 2 to 200 characters.
steam_id- Positive whole-number Steam application ID.
developer- Partial developer name, 2 to 100 characters.
publisher- Partial publisher name, 2 to 100 characters.
Examples
GET /api/v1/play?name=cyberpunk&rating=8&limit=20 GET /api/v1/play?genre=role_playing&platform=windows&limit=20 GET /api/v1/play?igdb_slug=cyberpunk-2077 GET /api/v1/play?steam_id=1091500
Genre values
point_and_click— Point and Clickfighting— Fightingshooter— Shootermusic— Musicplatform— Platformerpuzzle— Puzzleracing— Racingreal_time_strategy— Real-time Strategyrole_playing— RPGsimulator— Simulationsport— Sportsstrategy— Strategyturn_based_strategy— Turn-based Strategytactical— Tacticalhack_and_slash— Hack and Slashquiz_trivia— Triviapinball— Pinballadventure— Adventureindie— Indiearcade— Arcadecard_and_board_game— Card and Boardmoba— MOBAvisual_novel— Visual Novelaction— Actionfantasy— Fantasyscience_fiction— Science Fictionhorror— Horrorthriller— Thrillersurvival— Survivalhistorical— Historicalstealth— Stealthcomedy— Comedybusiness— Businessdrama— Dramanon_fiction— Non-fictionsandbox— Sandboxeducational— Educationalkids— Kidsopen_world— Open Worldwarfare— Warfareparty— Partyfour_x— 4Xerotic— Eroticmystery— Mysteryromance— Romance
Platform values
windows— Windowsmac— Maclinux— Linuxdos— DOSweb_browser— Web Browserplaystation— PlayStationplaystation_2— PS2playstation_3— PS3playstation_4— PS4playstation_5— PS5psp— PSPplaystation_vita— PS Vitaplaystation_vr— PS VRplaystation_vr_2— PS VR2xbox— Xboxxbox_360— Xbox 360xbox_one— Xbox Onexbox_series— Xbox Seriesnintendo_switch— Switchnintendo_switch_2— Switch 2nes— NESsnes— SNESnintendo_64— Nintendo 64gamecube— GameCubewii— Wiiwii_u— Wii Unintendo_ds— Nintendo DSnintendo_dsi— Nintendo DSinintendo_3ds— Nintendo 3DSnew_nintendo_3ds— New Nintendo 3DSgame_boy— Game Boygame_boy_color— Game Boy Colorgame_boy_advance— Game Boy Advancefamicom— Famicomfamicom_disk_system— Famicom Disk Systemsuper_famicom— Super Famicomdreamcast— Dreamcastsega_master_system— Sega Master Systemsega_genesis— Sega Genesissega_cd— Sega CDsega_32x— Sega 32Xsega_saturn— Sega Saturnsega_game_gear— Sega Game Gearsg_1000— SG-1000android— Androidios— iOSn_gage— N-Gageblackberry— BlackBerrywindows_phone— Windows Phonewindows_mobile— Windows Mobilepalm_os— Palm OStapwave_zodiac— Tapwave Zodiacamazon_fire_tv— Amazon Fire TVzeebo— Zeebolegacy_mobile— Legacy Mobilesteamvr— SteamVRoculus_vr— Oculus VRoculus_rift— Oculus Riftoculus_quest— Oculus Questoculus_go— Oculus Gometa_quest_2— Meta Quest 2meta_quest_3— Meta Quest 3windows_mixed_reality— Windows Mixed Realitydaydream— Daydreamgear_vr— Gear VRvisionos— visionOSarcade— Arcadeneo_geo_mvs— Neo Geo MVSneo_geo_aes— Neo Geo AESneo_geo_cd— Neo Geo CDhyper_neo_geo_64— Hyper Neo Geo 64amiga— Amigaamiga_cd32— Amiga CD32amstrad_cpc— Amstrad CPCamstrad_pcw— Amstrad PCWapple_ii— Apple IIapple_iigs— Apple IIGSatari_2600— Atari 2600atari_5200— Atari 5200atari_7800— Atari 7800atari_8_bit— Atari 8-bitatari_st— Atari STatari_lynx— Atari Lynxatari_jaguar— Atari Jaguaratari_jaguar_cd— Atari Jaguar CDbbc_micro— BBC Microc64— C64commodore_16— Commodore 16commodore_plus_4— Commodore Plus/4commodore_vic_20— Commodore VIC-20acorn_archimedes— Acorn Archimedesacorn_electron— Acorn Electrondragon_32_64— Dragon 32/64fm_7— FM-7fm_towns— FM Townsmsx— MSXmsx2— MSX2pc_8800— PC-8800pc_9800— PC-9800sharp_x1— Sharp X1sharp_x68000— Sharp X68000sinclair_ql— Sinclair QLsinclair_zx81— ZX81zx_spectrum— ZX Spectrumtatung_einstein— Tatung Einsteinthomson_mo5— Thomson MO5ti_99— TI-99trs_80— TRS-80trs_80_color_computer— TRS-80 Color Computerpc_engine— PC Enginepc_engine_cd— PC Engine CDpc_engine_supergrafx— PC Engine SuperGrafxpc_fx— PC-FX3do— 3DOcolecovision— ColecoVisionintellivision— Intellivisionintellivision_amico— Intellivision Amicoodyssey_2— Odyssey 2ouya— Ouyaphilips_cd_i— Philips CD-ivectrex— Vectrexvirtual_boy— Virtual Boywonderswan— WonderSwanwonderswan_color— WonderSwan Colorneo_geo_pocket— Neo Geo Pocketneo_geo_pocket_color— Neo Geo Pocket Colorgame_com— Game.comgizmondo— Gizmondoevercade— Evercadeplaydate— Playdatetabletop— Tabletopother— Other
06/read
Search written and spoken works by title details, author, or category.
Section filters
category- Exact category value.
author- Partial author name, 2 to 100 characters.
isbn- ISBN-10 or ISBN-13 without spaces or hyphens.
Examples
GET /api/v1/read?author=william%20gibson&limit=20 GET /api/v1/read?category=books&rating=7&limit=20 GET /api/v1/read?isbn=9780871355744
Category values
books— Bookscomics— Comicspublications— Publicationsstories— Storiesaudiobooks— Audio books
07Response data
Collection endpoints return arrays of records. /latest
returns an object whose watch, read, and
play properties each contain an array. Records are ordered
with the most recently updated first.
Common fields
name,slug- The display title and stable site slug.
year,rating- Numbers when known; otherwise
null. collections- An array of collection identifiers when assigned; otherwise
null. category_title,collections_title- Human-readable labels for category and collection identifiers where applicable.
description,synopsis,quote- Descriptive text when available; otherwise
null. reference_url- An external reference URL when available.
created_at,updated_at- Unix timestamps in seconds.
poster_url,poster_thumbnail_url,url- Site-relative paths. Missing poster paths are
null.
Clients should ignore response fields they do not use. New fields may be added to v1; an incompatible response change would use a new versioned path.
Section-specific fields
-
Watch:
category,runtime,genres,cast,director,studio,country,imdb_id,media_url, andtrailer_url. -
Play:
platforms,genres,developer,publisher,steam_id,igdb_slug, andtrailer_url. -
Read:
category,author, andisbn.
Shortened example watch record
[
{
"name": "RoboCop",
"slug": "robocop-1987",
"year": 1987,
"rating": 7.3,
"category": "films",
"genres": ["action", "science_fiction", "thriller"],
"collections": ["recommended", "classic"],
"runtime": 102,
"director": "Paul Verhoeven",
"imdb_id": "tt0093870",
"created_at": 1739567109,
"updated_at": 1740945687,
"poster_url": "/content/media/e6/e6af68f8877c.jpg",
"url": "/watch/robocop-1987"
}
]
08Errors and HTTP behaviour
Invalid values, unknown query parameters, and unsupported parameter
combinations return 400 Bad Request with field-level errors.
GET /api/v1/watch?year=2022.5
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
{
"success": false,
"errors": {
"year": "Please enter an integer"
}
}
GET and HEAD are supported.
OPTIONS returns the cross-origin capabilities.
Other methods return 405 Method Not Allowed with an
Allow: GET, HEAD, OPTIONS header.
A server-side failure returns 500 Internal Server Error.
Clients should use the HTTP status code first and should not depend on the
wording of an error message.