Getting started
The fastest path to a working integration. You won’t need an API key for
this walk-through — the /v1/check endpoint is public at 10 requests per
IP per hour.
1. Send your first request
Section titled “1. Send your first request”curl https://api.igregulator.io/v1/check?domain=bet365.comResponse:
{ "query": { "domain": "bet365.com" }, "match": { "confidence": "high", "match_type": "domain_exact", "operator": "Hillside (UK Sports) ENC", "operator_slug": "hillside-uk-sports-enc", "jurisdiction": "UKGC", "license_number": "055148-R-331498-001", "status": "active", "expires_at": null, "domain_association": "direct" }, "alternatives": [], "confidence": "high"}That’s it — no signup, no key. The match object is the answer;
alternatives[] populates when we’re not 100% sure. See
confidence scoring for the semantics.
2. Verify by licence number
Section titled “2. Verify by licence number”Compliance teams often receive a licence number from a regulator and need the reverse lookup — who holds it and what’s its status? Same endpoint, different query param:
curl "https://api.igregulator.io/v1/check?license_number=055148-R-331498-001"Returns the same { query, match, alternatives, confidence } shape;
confidence: high when the licence number exists in the register,
none otherwise. Pass ?domain= or ?license_number=, not
both.
3. Try a fuzzy match
Section titled “3. Try a fuzzy match”curl https://api.igregulator.io/v1/check?domain=paddypower.comThis domain isn’t in our authoritative registry, but the trading-name fuzzy fallback finds it:
{ "query": { "domain": "paddypower.com" }, "match": { "confidence": "medium", "match_type": "trading_name_fuzzy", "operator": "Power Leisure Bookmakers Limited", "license_number": "001034-R-315831-012" }, "alternatives": [ { "operator": "PPB Counterparty Services Limited", "similarity": 1 }, { "operator": "PPB Entertainment Limited", "similarity": 1 }, { "operator": "PPB GE Limited", "similarity": 1 } ]}Because paddypower.com trigram-matches four Flutter group entities at
similarity 1.0, primary selection falls through a documented
tiebreaker cascade — see
confidence scoring → Tiebreaking.
4. Graduate to authenticated requests
Section titled “4. Graduate to authenticated requests”When you hit the 10-per-hour ceiling, or you need:
- Higher volume (10k / 100k / unlimited depending on tier)
- The authenticated endpoints:
/v1/operators/:slug,/v1/licenses/* - Full search results (unauthenticated search caps at 3 rows)
Create a free account — founding members get the full Starter plan free, no card. Generate a key at app.igregulator.io/api-keys and attach it with a Bearer header:
curl -H "Authorization: Bearer YOUR_KEY" \ https://api.igregulator.io/v1/operators/search?q=paddy5. Explore interactively
Section titled “5. Explore interactively”Paste any endpoint into the API playground on this site — it’s a Scalar-powered try-it-out that runs against the live production API. For authenticated endpoints, paste your key into the Authorize dialog and execute without leaving the page.
Stability guarantees
Section titled “Stability guarantees”All /v1/* endpoints are maintained indefinitely. When /v2/* lands,
both versions will run in parallel for a minimum of 12 months. Individual
fields inside v1 get at least 90 days notice before removal, surfaced
via Deprecation: true + Sunset response headers (RFC 9745). Full
policy in the changelog.
- Authentication — how to create + rotate keys.
- Rate limits — quotas, headers, 429 handling.
- Code examples — JS/Python snippets.