Documentation Index
Fetch the complete documentation index at: https://docs.drain.lat/llms.txt
Use this file to discover all available pages before exploring further.
Steam
Base URL: https://drain.lat/api/v1/steam
All endpoints require the x-api-key header.
GET /profile/:vanityUrl
Fetch a Steam community profile using the vanity URL - the custom part of their profile URL (e.g. steamcommunity.com/id/gaben → vanity is gaben).
Endpoint
GET /api/v1/steam/profile/:vanityUrl
curl "https://drain.lat/api/v1/steam/profile/gaben" \
-H "x-api-key: YOUR_API_KEY"
Response
{
"username": "gaben",
"displayName": "Gabe Newell",
"realName": "",
"summary": "Valve co-founder",
"avatarUrl": "https://avatars.steamstatic.com/...",
"level": 98,
"status": "Online",
"currentGame": null,
"location": "Seattle, WA",
"isPrivate": false,
"badges": ["Pillar of Community", "Years of Service"],
"recentGames": [
{
"name": "Counter-Strike 2",
"hoursPlayed": "1,234 hrs on record"
}
],
"profileUrl": "https://steamcommunity.com/id/gaben",
"scrapedAt": "2026-05-05T12:00:00.000Z"
}
Uses the vanity URL, not the Steam64 ID. Private profiles return "isPrivate": true with limited data.
GET /profile/:vanityUrl/games
Get a user’s Steam game library.
Endpoint
GET /api/v1/steam/profile/:vanityUrl/games
curl "https://drain.lat/api/v1/steam/profile/gaben/games" \
-H "x-api-key: YOUR_API_KEY"
Response
{
"games": [
{
"name": "Counter-Strike 2",
"hoursPlayed": "1,234 hrs on record",
"logoUrl": "https://cdn.cloudflare.steamstatic.com/..."
},
{
"name": "Dota 2",
"hoursPlayed": "892 hrs on record",
"logoUrl": "https://cdn.cloudflare.steamstatic.com/..."
}
],
"total": 20,
"scrapedAt": "2026-05-05T12:00:00.000Z"
}
Returns up to 20 games. Private game libraries return { "error": "Games list is private" }.