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 100000 to 99999999999, 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"
    }
  ]
}
FieldTypeMeaning
modestringlive or test.
results[].numberinteger or stringThe value that you sent, echoed in the same form.
results[].dataobjectThe same fields as a single lookup. See the API reference.
results[].meta.longer_bin_availablebooleanThe same signal as on a single lookup. It is omitted when the plan does not include meta.
results[].errorstringNOT_FOUND or BAD_REQUEST when that item failed.
results[].messagestringText 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 codeCause
NOT_FOUNDThe BIN is not in the dataset.
BAD_REQUESTThe value is not a valid BIN.

The whole request fails only for these causes:

HTTP statusError codeCause
400BAD_REQUESTThe JSON is not valid, numbers is missing, or the array has more than 2,000 values.
401UNAUTHORIZEDThe API key is missing, not valid, revoked, or expired.
403FEATURE_NOT_AVAILABLEThe plan does not include batch lookup.
403FORBIDDENThe key does not have permission for this endpoint.
429QUOTA_EXCEEDEDThe 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.