# BIN Lookup Scraper (`codingfrontend/bin-lookup-scraper`) Actor

Lookup BIN/IIN card information including issuing bank, card type, scheme, brand, and country. Perfect for payment processing and fraud detection.

- **URL**: https://apify.com/codingfrontend/bin-lookup-scraper.md
- **Developed by:** [Coding Frontned](https://apify.com/codingfrontend) (community)
- **Categories:** Developer tools, Automation, Other
- **Features:** Limited permissions
- **Stats:** 10 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## BIN Lookup Scraper

Look up public card issuer metadata for one to five 6–8 digit BIN/IIN prefixes using the Binlist v3 public endpoint. The Actor can return scheme, type, brand, prepaid status, issuer, country, currency, coordinates, and card-number metadata when the source provides them.

### Data and billing semantics

Only source-backed lookup records with at least one BIN-specific metadata field enter the dataset. Every countable row has `recordType: "bin-lookup"`, `found: true`, `dataAvailable: true`, an exact source URL, and a timestamp. Nulls, blanks, empty containers, non-finite values, duplicates, and unknown fields are rejected by the validator.

Not-found, rate-limit, HTTP, timeout, invalid-response, and invalid-input evidence is stored in the `OUTPUT` key only, so PAY_PER_EVENT result data does not include failed lookups. A run with zero countable records exits nonzero; a partial run succeeds with warnings and exact counts.

### Public-source boundary

Binlist documents a free limit of five requests per hour with a burst allowance of five. Accordingly, this Actor:

- accepts at most five BIN/IIN values per run;
- performs serialized direct HTTPS requests with a fixed transparent Actor User-Agent;
- uses no proxy, browser, fingerprint modification, retry, login, key harvesting, or rate-limit bypass;
- redirects nowhere and caps each JSON response at 128 KiB.

Full primary account numbers are not required and are rejected. Supply only the first 6–8 BIN/IIN digits.

### Input

```json
{
  "bins": ["45717360"],
  "requestTimeoutSecs": 15
}
```

`bins` is required, unique after normalization, and limited to five strings containing exactly 6–8 digits. `requestTimeoutSecs` is optional and bounded from 5 to 30 seconds.

### Local verification

```bash
npm ci --omit=dev --omit=optional --ignore-scripts
npm test
npm run lint
apify validate-schema
apify run --purge --input-file qa-inputs/local-validation.json
npm run validate
```

This Actor uses the public Binlist data as returned. BIN metadata can be incomplete or inaccurate and must not be treated as proof of identity, authorization, fraud, or card validity.

# Changelog

This Actor's version history is a separate document: https://apify.com/codingfrontend/bin-lookup-scraper/changelog.md

# Actor input Schema

## `bins` (type: `array`):

One to five unique 6–8 digit BIN/IIN prefixes. Full card numbers are rejected and must never be supplied.

## `requestTimeoutSecs` (type: `integer`):

Timeout for each serialized public lookup. Requests are not retried.

## Actor input object example

```json
{
  "bins": [
    "45717360"
  ],
  "requestTimeoutSecs": 15
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `output` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "bins": [
        "45717360"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("codingfrontend/bin-lookup-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "bins": ["45717360"] }

# Run the Actor and wait for it to finish
run = client.actor("codingfrontend/bin-lookup-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "bins": [
    "45717360"
  ]
}' |
apify call codingfrontend/bin-lookup-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,codingfrontend/bin-lookup-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/DIJNpw04IpktY17tn/builds/H102URNamsB99BPd1/openapi.json
