Bulk BIN Lookup
POST /v1/bins looks up many BINs in one request. A batch contains 1 to 2,000 BINs. The response has one result for each value, in the same order.
The base URL is https://api.binlookupapi.com.
Availability
Batch lookup is included in BLAPI-500KPM. See Billing.
On other plans, the API returns HTTP 403 and the error code FEATURE_NOT_AVAILABLE. The message names the required plan. The body can include upgrade_url.
A test-mode organisation can call this endpoint before it subscribes. The response uses mock data. The test-mode daily limit is 500 lookups, so a test batch larger than 500 items returns 429.
You can also upload a file in the dashboard. See Batch CSV.
Request
Send a JSON body with a numbers array.
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]}'
{ "numbers": [400062, "400597", 99999999] }
Each value uses the same rules as one lookup:
- An integer from
100000to99999999999, or a string of digits. - Leading zeros are removed.
- Do not send a full card number.
- The array length is 1 to 2,000.
Response
{
"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 | Meaning |
|---|---|---|
mode | string | live or test. |
results[].number | integer or string | The value that you sent, echoed in the same form. |
results[].data | object | The same fields as a single lookup. See the API reference. |
results[].meta.longer_bin_available | boolean | The same signal as on a single lookup. It is omitted when the plan does not include meta. |
results[].error | string | NOT_FOUND or BAD_REQUEST when that item failed. |
results[].message | string | Text that describes the item error. |
Item errors
One failed item does not change the other items. A failed item has error and message instead of data.
| Error code | Cause |
|---|---|
NOT_FOUND | The BIN is not in the dataset. |
BAD_REQUEST | The value is not a valid BIN. |
The whole request fails only for these causes:
| HTTP status | Error code | Cause |
|---|---|---|
| 400 | BAD_REQUEST | The JSON is not valid, numbers is missing, or the array has more than 2,000 values. |
| 401 | UNAUTHORIZED | The API key is missing, not valid, revoked, or expired. |
| 403 | FEATURE_NOT_AVAILABLE | The plan does not include batch lookup. |
| 403 | FORBIDDEN | The key does not have permission for this endpoint. |
| 429 | QUOTA_EXCEEDED | The batch is larger than the remaining daily quota. |
Card number redaction
A value with more than 11 digits can be a full card number. The API returns that value as "[REDACTED]" with item error BAD_REQUEST. The API does not store the original value in the request log.
{
"number": "[REDACTED]",
"error": "BAD_REQUEST",
"message": "number must be an integer between 6 and 11 digits; digit strings are accepted for compatibility"
}
Quota
Each value in the array uses one lookup. This includes values that are not valid and values that are not found.
If the batch is larger than the remaining quota, the API returns 429 and uses no quota. X-Quota-Remaining then shows the real remainder, not zero. Split the batch and send it again.
A single-lookup 429 is different. X-Quota-Remaining is then 0.
See Daily quota.