As requested by @gantoine, here is a follow-up for #2504.
I ran into the same problem on a project and ended up building an API with a free plan, since this comes up every time you need to aggregate/reference game data across sources.
The API is available on RapidAPI: https://rapidapi.com/deixis-deixis-games/api/game-catalog-api
RapidAPI is a hub and marketplace for APIs. They handle quota/rate limit, billing, and more.
You can use it to retrieve matching HowLongToBeat IDs from IGDB, Steam, or other catalogs. My use case is modern PC and console games, so I am curious how well the ID coverage holds up for older ROMs. I would be happy to help integrate it into this project.
Example
I tested with Ocarina of time from an IGDB ID:
curl -s \
-H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
"https://game-catalog-api.p.rapidapi.com/v1/catalogs/igdb/id/1029"
{
"id": "1029",
"slug": "the-legend-of-zelda-ocarina-of-time",
"urls": [
"https://www.igdb.com/games/the-legend-of-zelda-ocarina-of-time"
],
"references": {
"howlongtobeat": {
"id": "10035",
"canonical": true,
"urls": [
"https://howlongtobeat.com/game/10035"
]
},
"metacritic": {
"id": "1300001290",
"slug": "the-legend-of-zelda-ocarina-of-time",
"canonical": true,
"urls": [
"https://www.metacritic.com/game/the-legend-of-zelda-ocarina-of-time/"
]
},
"twitch": {
"id": "11557",
"canonical": true
}
}
}
ToS concerns
@gantoine brought up potential ToS violations with IGDB and HLTB. To clarify: the API only resolves identifiers across catalogs, it does not serve HLTB or IGDB content. No playtimes, no scores, no game descriptions, just "this IGDB ID maps to this HLTB ID." An ID is a fact, not intellectual property.
Wikidata stores HLTB IDs, IGDB IDs, Metacritic IDs and makes them freely queryable via their own API. It is the same concept, and no platform has challenged it. An identifier pointing to their content is not their content.
As requested by @gantoine, here is a follow-up for #2504.
I ran into the same problem on a project and ended up building an API with a free plan, since this comes up every time you need to aggregate/reference game data across sources.
The API is available on RapidAPI: https://rapidapi.com/deixis-deixis-games/api/game-catalog-api
You can use it to retrieve matching HowLongToBeat IDs from IGDB, Steam, or other catalogs. My use case is modern PC and console games, so I am curious how well the ID coverage holds up for older ROMs. I would be happy to help integrate it into this project.
Example
I tested with Ocarina of time from an IGDB ID:
{ "id": "1029", "slug": "the-legend-of-zelda-ocarina-of-time", "urls": [ "https://www.igdb.com/games/the-legend-of-zelda-ocarina-of-time" ], "references": { "howlongtobeat": { "id": "10035", "canonical": true, "urls": [ "https://howlongtobeat.com/game/10035" ] }, "metacritic": { "id": "1300001290", "slug": "the-legend-of-zelda-ocarina-of-time", "canonical": true, "urls": [ "https://www.metacritic.com/game/the-legend-of-zelda-ocarina-of-time/" ] }, "twitch": { "id": "11557", "canonical": true } } }ToS concerns
@gantoine brought up potential ToS violations with IGDB and HLTB. To clarify: the API only resolves identifiers across catalogs, it does not serve HLTB or IGDB content. No playtimes, no scores, no game descriptions, just "this IGDB ID maps to this HLTB ID." An ID is a fact, not intellectual property.
Wikidata stores HLTB IDs, IGDB IDs, Metacritic IDs and makes them freely queryable via their own API. It is the same concept, and no platform has challenged it. An identifier pointing to their content is not their content.