Endpoint
| Method | GET |
| URL | https://cardbincheck.com/api/bin/{bin} |
| Auth | None required for the free per-IP allowance. An IPNOVA API key (free account at api.ipnova.com) applies your plan allowance instead: send it as the X-Api-Key header or the ?key= query parameter. Keyed responses carry X-Credits-Remaining and X-Credits-Used. |
| Rate limit | 100 requests a day and 30 a minute, per IP (see X-RateLimit-Remaining header) |
| CORS | Access-Control-Allow-Origin: * - call it straight from the browser |
| Caching | Responses are cacheable for 24h (Cache-Control: max-age=86400) |
| OpenAPI | Machine-readable spec at /openapi.json |
Plans
One key. Twelve APIs.
A free IPNOVA API account gives you 5,000 lookups a month across every API below, 60 a minute, no card, for evaluation and small projects. Paid plans from $19 a month for production volumes, with a commercial licence and a hard cap instead of overage billing.
Takes a minute. Send it as X-Api-Key or ?key=.
Without a key this API answers 100 requests a day per IP address, for evaluation and personal use. Try it: curl https://cardbincheck.com/api/bin/424242
Example Request
Look up the BIN 424242:
| curl | curl https://cardbincheck.com/api/bin/424242 |
| JavaScript | const r = await fetch('https://cardbincheck.com/api/bin/424242').then(r => r.json()); |
| PHP | $r = json_decode(file_get_contents('https://cardbincheck.com/api/bin/424242'), true); |
| Python | r = requests.get('https://cardbincheck.com/api/bin/424242').json() |
Example Response
A successful lookup returns 200 OK with:
| Field | Type | Description |
|---|---|---|
success | boolean | true when the BIN was found |
data.bin | string | The matched BIN (longest dataset prefix of your input) |
data.scheme | string | Card network - Visa, Mastercard, American Express, … |
data.funding | string | Credit, Debit, Prepaid, or Charge Card |
data.segment | string | Card product segment - Classic, Gold, Platinum, Business, … |
data.issuer | string | Issuing bank / financial institution |
data.country_code | string | ISO 3166-1 alpha-2 country code |
data.country_name | string | Country of issue |
data.bank_url | string | Issuer website (when available) |
data.bank_phone | string | Issuer customer-service phone (when available) |
page | string | Human-readable page for this BIN on cardbincheck.com |
Errors
Every non-200 response uses the same envelope: success: false, an error flag, a machine-readable reason, a human message, and a docs link back to this page.
| Status | Reason | Meaning |
|---|---|---|
400 | invalid_input | The BIN is not 6 to 8 digits |
401 | invalid_key | The supplied API key is unknown or revoked |
404 | not_found | BIN not in the dataset |
405 | method_not_allowed | The batch endpoint was called with GET instead of POST |
413 | payload_too_large | The batch request body is too large |
429 | rate_limit | Too many requests in the last minute (Retry-After: 60) |
429 | daily_limit | Keyless per-IP daily cap reached |
429 | credits_exhausted | Keyed monthly allowance used up |
Example, a BIN not in the dataset:
{"success": false, "error": true, "reason": "not_found", "message": "BIN not in the public dataset.", "docs": "https://cardbincheck.com/bin-lookup-api", "bin": "999999"}
Batch Lookups
Check up to 100 BINs in one request:
POST /api/bin-batch
Content-Type: application/json
{"bins": ["424242", "510510", "379354"]}
Each batch counts as one tenth of its size against the daily limit (a 100-BIN batch = 10 requests). There is also a browser version with CSV export.
Fair Use
- 100 requests per day per IP - enough to evaluate the API; a free IPNOVA API key raises the limit.
- Cache responses on your side (they rarely change); this effectively multiplies your quota.
- A link back to cardbincheck.com is appreciated but not required.
- Only the first 6-8 digits are ever processed. Never send full card numbers to any API.
Frequently Asked Questions
Is the BIN lookup API really free?
Yes. No API key, no registration, no credit card. Each IP can make up to 100 requests per day, and CORS is enabled for direct browser use.
Where does the data come from?
An open, regularly refreshed dataset of 343,000+ BIN records covering all major card networks and virtually every country.
Can I use it in production?
Yes, within fair use (100 requests/day per IP). Responses are cacheable for 24 hours, so caching on your side effectively multiplies your quota.
Do you have test BINs I can try?
How do I call the BIN lookup API?
Send a GET request to https://cardbincheck.com/api/bin/{bin} where {bin} is the first 6-8 digits of a card, e.g. https://cardbincheck.com/api/bin/424242. The response is JSON.
What data does the API return?
The card scheme (Visa, Mastercard, etc.), funding type (credit/debit), card segment, issuing bank, country code and name, and the issuer website and phone when available.