Batch Lookups
Look up many BINs in a single request with POST /v1/bins. A batch accepts 1 to 2,000 BINs and returns one result per submitted number, in the same order.
Base URL: https://api.binlookupapi.com
Endpoint: POST /v1/bins
Availability
Batch lookups are included in the BLAPI-500KPM plan. See Subscriptions for plan details.
Test-mode organisations always have access and receive mock data, so you can integrate against the endpoint before subscribing. Test mode has a 500-lookups/day limit, so a test batch larger than 500 items returns 429.
Making a Request
Send a POST request with a JSON body containing a numbers array:
POST /v1/bins
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
{
"numbers": [400062, "400597", 99999999]
}
Each entry follows the same rules as the single-lookup endpoint: an integer between 6 and 11 digits (range: 100000 to 99999999999). Digit-only strings are accepted for compatibility and coerced to the same integer value — leading zeroes are not preserved. Do not pass full card numbers.
The array must contain between 1 and 2,000 entries.
cURL Example
curl -X POST "https://api.binlookupapi.com/v1/bins" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"numbers": [400062, "400597", 99999999]}'
Response
The response contains a results array with one entry per submitted number, in the same order. Each successful entry carries the same data object as a single lookup, plus a per-item meta object:
{
"mode": "live",
"results": [
{
"number": 400062,
"data": {
"bin": "400062",
"scheme": "visa",
"funding": "debit",
"brand": "VISA",
"category": "SIGNATURE",
"country": { "code": "AE", "name": "UNITED ARAB EMIRATES" },
"issuer": {
"name": "EMIRATES NBD BANK (P.J.S.C.)",
"website": "http://www.emiratesnbd.com/en/",
"phone": "+971800456"
},
"currency": "AED",
"prepaid": false,
"commercial": false
},
"meta": { "longer_bin_available": true }
},
{
"number": "400597",
"data": {
"bin": "400597",
"scheme": "visa",
"funding": "credit",
"brand": "VISA",
"category": "BUSINESS",
"country": { "code": "US", "name": "UNITED STATES" },
"issuer": {
"name": "FIRST ELECTRONIC BANK",
"website": "https://firstelectronic.bank/",
"phone": "+ (1) 801-572-4004"
},
"currency": "USD",
"prepaid": false,
"commercial": true
},
"meta": { "longer_bin_available": true }
},
{
"number": 99999999,
"error": "NOT_FOUND",
"message": "BIN not found"
}
]
}
| Field | Type | Description |
|---|---|---|
mode | string | "live" or "test" — test-mode organisations receive mock data |
results[].number | integer | string | The submitted value, echoed back as sent |
results[].data | object | The same response fields as a single lookup — see API Reference |
results[].meta.longer_bin_available | boolean | Per-item precision signal, same as on single lookups |
results[].error | string | Per-item error code when the entry failed (NOT_FOUND or BAD_REQUEST) |
results[].message | string | Human-readable description of the per-item error |
Per-Item Errors
A failed entry does not affect the rest of the batch. Instead of data, the entry carries error and message:
| Error Code | Cause |
|---|---|
NOT_FOUND | The BIN is not in the dataset |
BAD_REQUEST | The value is not a valid BIN (wrong type, out of the 6–11 digit range) |
The whole request only fails for request-level problems:
| Status | Error Code | Cause |
|---|---|---|
400 | BAD_REQUEST | Malformed JSON, missing numbers array, or more than 2,000 entries |
401 | UNAUTHORIZED | Missing, invalid, revoked, or expired API key |
429 | QUOTA_EXCEEDED | The batch is larger than the remaining daily quota — see below |
Card Number Redaction
Values longer than 11 digits could be full card numbers. They are returned as "[REDACTED]" with a per-item BAD_REQUEST and are not stored in request logs:
{
"number": "[REDACTED]",
"error": "BAD_REQUEST",
"message": "number must be an integer between 6 and 11 digits; digit strings are accepted for compatibility"
}
Quota Accounting
Every submitted number counts as one lookup against the daily quota — including invalid and unknown ones.
If the batch is larger than the remaining quota, the API returns 429, consumes nothing, and the X-Quota-Remaining header reports the actual remaining quota — so you can split the batch and retry. This differs from single-lookup 429 responses, where X-Quota-Remaining is 0.
See Subscriptions for quota headers and daily limits.
Next Steps
- API Reference — single-lookup endpoint, response fields, and error codes
- Subscriptions — plans, quotas, and quota headers
- API Keys — managing your API credentials