Documentation

Documentation

Everything you need to query data4ai from code, automations and AI agents.

Getting started

Quickstart

Create a free account, copy your API key from the dashboard and make your first request:

curl "https://data4ai.xyz/api/v1/esports/results?game=counter-strike-2&limit=5" \
  -H "X-Api-Key: YOUR_API_KEY"

Common tasks

The fastest way to get what you need: pick a question and copy the request. Always pass game when you filter by team, so results of different games (CS2, LoL…) are never mixed.

Discover the dataset

What does the dataset cover right now?

Start here. Every game with its number of teams, tournaments, active tournaments and matches. Free — no credits used.

GET/api/v1/esports/games

Which teams are there in a game?

All teams of a game, strongest (Elo) first. Use offset to page through.

GET/api/v1/esports/teams?game=counter-strike-2&limit=100

Which tournaments are active now?

Tournaments of a game that still have matches to play or were played in the last 7 days.

GET/api/v1/esports/tournaments?game=counter-strike-2&status=active

Esports Results

Latest results of a team

Last matches of a team in one game, with scores, winner and both Elos. NAVI and Natus Vincere both work.

GET/api/v1/esports/results?game=counter-strike-2&team=Natus%20Vincere&limit=10

Upcoming matches with win probabilities

Next scheduled matches of a game, with Elo and market win probabilities for each side.

GET/api/v1/esports/matches/upcoming?game=league-of-legends&limit=10

A team's Elo and recent form

Find a team by name: Elo rating, region and last-10 form (wins, losses, streak).

GET/api/v1/esports/teams?game=dota-2&name=Aurora

Ranking of the strongest teams

Teams of a game sorted by Elo, strongest first.

GET/api/v1/esports/teams?game=valorant&sort=elo&limit=20

All results of a tournament

Finished matches of a tournament (partial name), newest first.

GET/api/v1/esports/results?game=counter-strike-2&tournament=ESL%20Pro%20League&limit=25

Freelancer Jobs

Freelance jobs by skill

Newest public freelance jobs with a given skill tag, with budget and location.

GET/api/v1/jobs/freelance?tag=react&limit=10

Want to try them without code? Open the API Playground →

Authentication

Authenticate every request with your API key in the X-Api-Key header. You can also use Authorization: Bearer <key>. Keep your key secret — rotate it from the dashboard if it leaks.

Header
X-Api-Key: YOUR_API_KEY

Response format

Responses follow JSON:API conventions: a data array of resources (id, type, attributes) and a meta object with total, limit and offset.

Errors & credits

Only successful (2xx) responses consume credits. Every response includes X-Credits-Used and X-Credits-Limit headers.

400Invalid query parameters
401Missing or invalid API key
402Free monthly credits exhausted — upgrade to pay-as-you-go
404Resource not found
429Monthly credit cap reached
503Dataset temporarily unavailable (not charged)

Esports Results

Esports matches

Finished results (newest first) and upcoming matches (soonest first) share the same shape. Every call consumes 1 credit.

GET /api/v1/esports/results

Finished matches with score, winner and pre-match signals.

GET /api/v1/esports/matches/upcoming

Scheduled and live matches with win probabilities.

GET /api/v1/esports/matches/:id

A single match by id.

Query parameters

gameenumOne of: counter-strike-2, league-of-legends, valorant, dota-2, age-of-empires, brawl-stars, ea-sports-fc
teamstringTeam name, partial match
tournamentstringTournament name, partial match
fromdateMatch date from (YYYY-MM-DD), inclusive
todateMatch date to (YYYY-MM-DD), inclusive
limitintegerResults per page, 1–100 (default 25)
offsetintegerPagination offset (default 0)

Signals for prediction models

Each match includes both teams’ current Elo and a prediction object: elo_win_probability (from the Elo difference) and market_win_probability (implied by the prediction market). Values are [team1, team2] and sum to 1.

GET /api/v1/esports/results?limit=1
1{2  "data": [3    {4      "id": "cs2-iem-cologne-natus-vinc-team-vital-1006",5      "type": "esports_match",6      "attributes": {7        "game": "counter-strike-2",8        "tournament": "IEM Cologne",9        "tournament_tier": "S",10        "best_of": 3,11        "scheduled_at": "2026-10-06T15:00:00Z",12        "status": "finished",13        "teams": [14          { "id": "cs2-natus-vincere", "name": "Natus Vincere", "elo": 1612.4, "score": 1 },15          { "id": "cs2-team-vitality", "name": "Team Vitality", "elo": 1688.0, "score": 2 }16        ],17        "winner": "Team Vitality",18        "prediction": {19          "elo_win_probability": [0.393, 0.607],20          "market_win_probability": [0.426, 0.574]21        }22      }23    }24  ],25  "meta": { "total": 1840, "limit": 1, "offset": 0 }26}

Games, teams & tournaments

Team strength and context: Elo rating, region, last-10 form (wins, losses, streak) and tournament metadata. The team profile also includes the current roster and achievements — placements, tier, prize money and a titles/podiums summary.

GET /api/v1/esports/games

Index of the dataset: per game, number of teams, tournaments, active tournaments and matches. Free (no credits).

GET /api/v1/esports/teams

Teams sorted by Elo, with recent form.

GET /api/v1/esports/teams/:id

Full team profile: recent results with scores, roster, achievements.

GET /api/v1/esports/tournaments

Tournaments with status (active / upcoming / finished), matches played and pending, tier and prize pool.

Query parameters — /esports/teams

gameenumOne of: counter-strike-2, league-of-legends, valorant, dota-2, age-of-empires, brawl-stars, ea-sports-fc
namestringTeam name or short name, partial match
regionstringRegion code: EU, NA, KR, CN, BR, CIS, APAC…
sortelo · nameelo (default, strongest first) or name
limitintegerResults per page, 1–100 (default 25)
offsetintegerPagination offset (default 0)
GET /api/v1/esports/teams/cs2-navi
1{2  "data": {3    "id": "cs2-natus-vincere",4    "type": "esports_team",5    "attributes": {6      "name": "Natus Vincere",7      "short_name": "NAVI",8      "game": "counter-strike-2",9      "region": "EU",10      "elo": 1612.4,11      "form": { "last_n": 10, "wins": 6, "losses": 4, "win_rate": 0.6, "streak": "LWWLWWLWWL" },12      "recent_results": [13        { "opponent": "VIT", "score": "1-2", "win": false, "date": "2026-10-06T15:00:00Z", "tournament": "IEM Cologne" }14      ],15      "roster": [16        { "name": "s1mple", "real_name": "Oleksandr Kostyliev", "role": null, "nationality": "Ukraine", "join_date": "2016-08-04" }17      ],18      "achievements": [19        { "tournament": "IEM Cologne 2026", "tier": "S-Tier", "place": "1st", "place_num": 1, "prize": "$400,000", "prize_usd": 400000, "final_opponent": "Vitality", "final_score": "2:1", "date": "2026-06-22" }20      ],21      "achievements_summary": { "count": 10, "titles": 3, "podiums": 6, "total_prize_usd": 1250000 }22    }23  }24}

Query parameters — /esports/tournaments

gameenumOne of: counter-strike-2, league-of-legends, valorant, dota-2, age-of-empires, brawl-stars, ea-sports-fc
statusactive · upcoming · finishedactive (matches still to play or played in the last 7 days), upcoming or finished
namestringTournament name, partial match
limitintegerResults per page, 1–100 (default 25)
offsetintegerPagination offset (default 0)
GET /api/v1/esports/games
1{2  "data": [3    {4      "id": "counter-strike-2",5      "type": "esports_game",6      "attributes": {7        "name": "Counter-Strike 2",8        "teams": 93,9        "tournaments": 49,10        "active_tournaments": 6,11        "finished_matches": 268,12        "upcoming_matches": 5,13        "last_match_at": "2026-10-09T08:30:00Z"14      }15    }16  ]17}

Freelancer Jobs

Freelance jobs

Public freelance postings only — drafts and private hires are never returned. Each call consumes 1 credit.

GET /api/v1/jobs/freelance

Public freelance jobs, newest first.

GET /api/v1/jobs/freelance/:id

A single job with full description and how to apply.

Query parameters

qstringText to search in the job title
categorystringExact category
tagstringSkill tag, e.g. react
job_typestringExact job type
locationstringLocation, partial match (e.g. worldwide)
languagestringPosting language: en, es, de…
min_budgetnumberMinimum budget (max of the range ≥ value)
freelancebooleantrue / false
fromdatePublished from (YYYY-MM-DD)
todatePublished to (YYYY-MM-DD)
limitintegerResults per page, 1–100 (default 25)
offsetintegerPagination offset (default 0)
curl "https://data4ai.xyz/api/v1/jobs/freelance?tag=react&limit=1" \
  -H "X-Api-Key: YOUR_API_KEY"
200 OK
1{2  "data": [3    {4      "id": "1b4e28ba-2fa1-11d2-883f-0016d3cca427",5      "type": "freelance_job",6      "attributes": {7        "title": "React developer for SaaS dashboard",8        "company": { "name": "Acme", "logo_url": null },9        "category": "development",10        "job_type": "freelance",11        "published_at": "2026-10-07T10:00:00Z",12        "location": "Worldwide",13        "budget": { "min": 500, "max": 1500, "currency": "USD", "pricing": "fixed" },14        "tags": ["react", "typescript"],15        "language": "en",16        "freelance": true,17        "apply_url": "https://..."18      }19    }20  ],21  "meta": { "total": 312, "limit": 1, "offset": 0 }22}

MCP (AI agents)

MCP server

POST /mcp

Our remote MCP server exposes the same data as tools for AI agents over Streamable HTTP. Claude, ChatGPT and Claude Code connect with OAuth (log in and approve); other clients can send the API key as a Bearer token. Tool calls are billed like API calls.

Available tools

search_esports_results1 credit
get_upcoming_esports_matches1 credit
search_esports_teams1 credit
get_esports_team1 credit
search_esports_tournaments1 credit
search_freelance_jobs1 credit
get_freelance_job1 credit
list_esports_gamesfree
mcp.json (API key)
{
  "mcpServers": {
    "data4ai": {
      "url": "https://data4ai.xyz/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Claude →·ChatGPT →·n8n →