Base URL
All API requests use:
https://api.igamingfinder.com/api/v1/igaming
Authenticate with X-API-Key or Authorization: Bearer header. See Authentication.
GET /domains
COST 0 credits / request
Search and filter iGaming operator domains. Use filters to narrow by jurisdiction, payment method, game provider, geo hint, or enrichment freshness.
/api/v1/igaming/domains
Authorization
Query
License jurisdiction (mga, ukgc, curacao, anjouan)
Payment category (card, crypto, ewallet, bank_transfer, open_banking, local_apm)
Normalized provider name (evolution, pragmatic-play)
Exclude domains with this provider
Exclude domains with this payment category
Only domains with affiliate programs
Geographic targeting hint
Only domains enriched after this timestamp
Results per page (max 500)
Example response200
{
"success": true,
"data": {
"domains": [
{
"domain_normalized": "stake.com",
"operator_name": "Medium Rare N.V.",
"last_enriched_at": "2026-05-01T08:15:00Z"
}
],
"total": 142,
"page": 1,
"per_page": 10
}
}
GET /domains/:domain
Get the full enrichment profile for a single domain.
Path parameters:
| Name | Type | Required | Description |
|---|---|---|---|
domain |
string | yes | Domain name (e.g. stake.com) |
Query parameters:
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
include[] |
string | no | all | Sections to include: licenses, payment_methods, game_providers, affiliate_programs, geo, related_domains |
Cost: 0 credits / request
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.igamingfinder.com/api/v1/igaming/domains/stake.com?include[]=licenses&include[]=payment_methods"
import requests
r = requests.get(
"https://api.igamingfinder.com/api/v1/igaming/domains/stake.com",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"include[]": ["licenses", "payment_methods"]},
)
print(r.json())
Response:
{
"success": true,
"data": {
"domain": "stake.com",
"domain_normalized": "stake.com",
"status": "enriched",
"last_enriched_at": "2026-05-01T08:15:00Z",
"operator": {
"name": "Medium Rare N.V.",
"legal_entity_name": "Medium Rare N.V.",
"country_of_incorporation": "CW"
},
"brand": { "name": "Stake", "slug": "stake" },
"licenses": [
{
"jurisdiction": "curacao",
"license_number": "GLH-OCCHKTW0000000",
"status": "active",
"source_url": "https://www.gaming-curacao.com/",
"first_seen_at": "2026-04-15T00:00:00Z",
"last_confirmed_at": "2026-05-01T08:15:00Z"
}
],
"payment_methods": [
{
"normalized_name": "bitcoin",
"category": "crypto",
"confidence": "high",
"first_seen_at": "2026-04-15T00:00:00Z",
"last_confirmed_at": "2026-05-01T08:15:00Z"
}
],
"meta": {
"freshness_age_seconds": 172800,
"served_from_cache": true,
"billable": false,
"observed_at": "2026-05-01T08:15:00Z"
}
}
}
Errors:
| Status | Meaning |
|---|---|
| 404 | Domain not found in the database |
POST /enrichments
Start a domain enrichment run. Returns cached data if a recent enrichment exists, otherwise starts a new run.
Request body:
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
domain |
string | yes | — | Domain to enrich |
strategy |
string | no | "full" |
Enrichment strategy |
Cost: 10 credits (0 if cached)
curl -X POST -H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "roobet.com"}' \
https://api.igamingfinder.com/api/v1/igaming/enrichments
import requests
r = requests.post(
"https://api.igamingfinder.com/api/v1/igaming/enrichments",
headers={
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
json={"domain": "roobet.com"},
)
print(r.json())
Response (cached, 200):
{
"success": true,
"data": {
"domain": "roobet.com",
"status": "enriched",
"last_enriched_at": "2026-05-01T12:00:00Z",
"meta": {
"served_from_cache": true,
"billable": false
}
}
}
Response (new run, 202):
{
"success": true,
"message": "Enrichment started",
"data": {
"enrichment_run_id": 42,
"poll_url": "/api/v1/igaming/enrichment_runs/42",
"cached": false,
"billable": true
}
}
Errors:
| Status | Meaning |
|---|---|
| 429 | Monthly credit quota exceeded |
$ help --topic=infoEnrichment takes 30-120 seconds. Poll thepoll_urlto check progress.
GET /enrichment_runs/:id
Poll the status of an enrichment run.
Path parameters:
| Name | Type | Required | Description |
|---|---|---|---|
id |
integer | yes | Enrichment run ID (from POST /enrichments response) |
Cost: 0 credits / request
curl -H "X-API-Key: YOUR_API_KEY" \
https://api.igamingfinder.com/api/v1/igaming/enrichment_runs/42
Response (pending):
{
"success": true,
"data": {
"id": 42,
"status": "pending",
"domain": "roobet.com",
"strategy": "full",
"started_at": "2026-05-03T10:30:00Z",
"completed_at": null
}
}
Response (completed):
{
"success": true,
"data": {
"id": 42,
"status": "completed",
"domain": "roobet.com",
"strategy": "full",
"started_at": "2026-05-03T10:30:00Z",
"completed_at": "2026-05-03T10:32:15Z",
"enrichment": {
"domain_normalized": "roobet.com",
"status": "enriched",
"last_enriched_at": "2026-05-03T10:32:15Z"
}
}
}
Response (failed):
{
"success": true,
"data": {
"id": 42,
"status": "failed",
"error_details": {
"error": "Timeout during enrichment",
"error_type": "timeout"
}
}
}
GET /account
Get your current plan and credit usage.
Cost: 0 credits / request
curl -H "X-API-Key: YOUR_API_KEY" \
https://api.igamingfinder.com/api/v1/igaming/account
Response:
{
"success": true,
"data": {
"plan": "starter",
"credits_granted": 2500,
"credits_used": 120,
"credits_reserved": 10,
"available_credits": 2370
}
}
[!NOTE] Credits are an upfront ledger:
credits_grantedaccrues when your plan starts or renews and never expires — there is no monthly reset.credits_granted: nullmeans no quota is enforced (internal accounts). Plan credit allowances are listed on the pricing page.$ help --topic=warningDeprecated: the response also includesmonthly_credit_quota,monthly_credits_used, andmonthly_credits_reservedas aliases of the fields above. They will be removed in a future release — migrate to the new names.
POST /exports
Create a bulk export of filtered domains as CSV or JSONL.
Request body:
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
filters |
object | no | {} |
Same filter params as GET /domains |
export_format |
string | no | "csv" |
"csv" or "json" |
fields[] |
string[] | no | all | Specific sections to include |
Cost: Variable (based on result count)
curl -X POST -H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filters": {"jurisdiction": "MGA"}, "export_format": "csv"}' \
https://api.igamingfinder.com/api/v1/igaming/exports
import requests
r = requests.post(
"https://api.igamingfinder.com/api/v1/igaming/exports",
headers={
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"filters": {"jurisdiction": "MGA"},
"export_format": "csv",
},
)
print(r.json())
Response (202):
{
"success": true,
"message": "Export queued",
"data": {
"export_id": 123,
"poll_url": "/api/v1/igaming/exports/123"
}
}
GET /exports/:id
Poll export status.
Path parameters:
| Name | Type | Required | Description |
|---|---|---|---|
id |
integer | yes | Export ID |
Cost: 0 credits / request
curl -H "X-API-Key: YOUR_API_KEY" \
https://api.igamingfinder.com/api/v1/igaming/exports/123
Response (completed):
{
"success": true,
"data": {
"id": 123,
"status": "completed",
"format": "csv",
"download_url": "/api/v1/igaming/exports/123/download",
"total_rows": 5000,
"credits_used": 50,
"expires_at": "2026-05-10T10:30:00Z"
}
}
GET /exports/:id/download
Download a completed export file.
Cost: 0 credits / request
curl -H "X-API-Key: YOUR_API_KEY" \
-O https://api.igamingfinder.com/api/v1/igaming/exports/123/download
Returns the file as an attachment with Content-Disposition: attachment.
Errors:
| Status | Meaning |
|---|---|
| 404 | Export not found, still pending, or file expired |