BIN lookup with Python
This page uses Python 3 and the requests library. Create an API key in the quickstart.
pip install requests
export BINLOOKUP_API_KEY="your_key_here"
Look up one BIN
import os
import requests
API_KEY = os.environ["BINLOOKUP_API_KEY"]
URL = "https://api.binlookupapi.com/v1/bin"
response = requests.post(
URL,
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={"number": 42467101},
timeout=30,
)
payload = response.json()
if response.status_code == 200:
data = payload["data"]
print(data["scheme"], data["issuer"]["name"])
print("Remaining:", response.headers["X-Quota-Remaining"])
elif response.status_code == 401:
raise SystemExit("The API key is missing or not valid.")
elif response.status_code == 403:
raise SystemExit(f"{payload.get('error')}: {payload.get('message')}")
elif response.status_code == 404:
raise SystemExit("The BIN is not in the data.")
elif response.status_code == 429:
raise SystemExit("The daily quota is used.")
elif response.status_code == 400:
raise SystemExit(payload.get("message", "The request is not valid."))
else:
raise SystemExit(f"The API returned HTTP {response.status_code}.")
data contains the fields in the API reference. On BLAPI-150KPM and above, read payload["meta"]["longer_bin_available"]. On lower plans, meta is absent.
HTTP 403 is FORBIDDEN or FEATURE_NOT_AVAILABLE.
Look up many BINs
POST /v1/bins accepts 1 to 2,000 values. It requires BLAPI-500KPM, or a test-mode organisation. Each value uses one lookup.
response = requests.post(
"https://api.binlookupapi.com/v1/bins",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={"numbers": [400062, "400597", 99999999]},
timeout=60,
)
payload = response.json()
if response.status_code == 403 and payload.get("error") == "FEATURE_NOT_AVAILABLE":
raise SystemExit("Batch lookup needs the BLAPI-500KPM plan.")
response.raise_for_status()
for item in payload["results"]:
if "data" in item:
print(item["number"], item["data"]["scheme"])
else:
print(item["number"], item["error"])
If the batch is larger than the remaining quota, the status is 429 and no quota is used. Read X-Quota-Remaining and split the list. See Batch lookups.