Prediction Hunt/ API
REST API / Matching / Sports Matching

Sports Matching

Query matched game markets by sport and date. Returns all matched pairs for each game across all available platforms.

Case Study

See how Elastics built their AI trading terminal on this endpoint

Matches aren't always 100% accurate. Verify all data before executing a trade.

GET/v2/matching-markets/sports

Query Parameters

sportstringRequired

Sport code: nba, nhl, mlb, nfl, cfb, cbb, epl, ucl, laliga, bundesliga, ligue1, seriea, mls, ligamx, atp, wta, pga, and more. Use league codes for soccer (epl, mls, etc.), not 'soccer'. The alias football maps to nfl.

datestring

Date in YYYY-MM-DD format. Defaults to today.

platformsstring

Comma-separated list of platforms. Only return groups matching all listed platforms.

Response Schema

sportstring

The sport code that was queried.

datestring

The date that was queried (YYYY-MM-DD).

gamesobject[]

Matched games for the given sport and date.

group_idinteger

Internal match group ID.

game_titlestring

Game title (e.g. "Lakers vs Celtics").

event_datestring

Date of the game (YYYY-MM-DD).

marketsobject[]

Markets from each platform for this game.

platformstring

Platform name (polymarket, kalshi, etc.).

market_idstring

Platform-native market ID.

source_urlstring

Direct link to the market on the platform.

yes_bidnumber

Current best bid price for YES.

yes_asknumber

Current best ask price for YES.

last_pricenumber

Last traded price.

Authentication

API Key

To secure your requests, we strongly recommend passing your API key via the X-API-Key header. This prevents sensitive keys from being exposed in access logs or browser history.

Request HeaderX-API-Key: pmx_test_5e8f...

Rate Limits

API rate limits are enforced based on the tier associated with your API key. Limits are tracked on two dimensions: requests per second and requests per month. Each completed request counts toward the global monthly quota. Separate endpoint-group monthly limits (matched markets, arbitrage, EV) only advance when the response body has success: true.

Usage is returned on responses via headers such as:

Response Headers (global)X-RateLimit-Limit-Second: 10X-RateLimit-Remaining-Second: 9X-RateLimit-Limit-Month: 1000X-RateLimit-Remaining-Month: 842Example (endpoint-group, when applicable)X-RateLimit-Limit-Arb-Month: 500X-RateLimit-Remaining-Arb-Month: 412

If you exceed a rate limit, the API returns a 429 status with a Retry-After header indicating when you can resume.

Request

Live API Key

Demo Mode
Verified

Sports Parameters

SportRequired
Date
Platforms

Response

Click EXECUTE to send a request →