Skip to main content

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" }.