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"
    }
  ]
}
FieldTypeDescription
modestring"live" or "test" — test-mode organisations receive mock data
results[].numberinteger | stringThe submitted value, echoed back as sent
results[].dataobjectThe same response fields as a single lookup — see API Reference
results[].meta.longer_bin_availablebooleanPer-item precision signal, same as on single lookups
results[].errorstringPer-item error code when the entry failed (NOT_FOUND or BAD_REQUEST)
results[].messagestringHuman-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 CodeCause
NOT_FOUNDThe BIN is not in the dataset
BAD_REQUESTThe value is not a valid BIN (wrong type, out of the 6–11 digit range)

The whole request only fails for request-level problems:

StatusError CodeCause
400BAD_REQUESTMalformed JSON, missing numbers array, or more than 2,000 entries
401UNAUTHORIZEDMissing, invalid, revoked, or expired API key
429QUOTA_EXCEEDEDThe 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