# Bitcoin Address Intelligence & Transaction History Scraper (`scrapers_lat/bitcoin-address-intelligence-scraper`) Actor

On-chain Bitcoin address intelligence for AML, forensics and wallet analytics. Get balance, total received/sent, UTXOs, activity timeline, counterparties, fee stats and full transaction history for any BTC address. JSON, CSV, Excel.

- **URL**: https://apify.com/scrapers\_lat/bitcoin-address-intelligence-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 address intelligence results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![Bitcoin Address Intelligence & Transaction History Scraper](https://scrapers.lat/banners/bitcoin-address-intelligence-scraper.png)](https://apify.com/scrapers_lat/bitcoin-address-intelligence-scraper)

## Bitcoin Address Intelligence & Transaction History Scraper

Here is one real result, with every field the actor returns for an address:

```json
{
  "recordType": "address",
  "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
  "addressType": "P2PKH",
  "balanceSats": 5735681761,
  "balanceBtc": 57.35681761,
  "totalReceivedBtc": 57.35681761,
  "totalSentBtc": 0,
  "txCount": 65350,
  "fundedTxoCount": 78213,
  "spentTxoCount": 0,
  "unconfirmedTxCount": 0,
  "unconfirmedBalanceBtc": 0,
  "utxoCount": null,
  "firstSeen": "2026-08-15T19:14:58.000Z",
  "lastSeen": "2026-08-16T07:23:34.000Z",
  "firstSeenHeight": 962618,
  "lastSeenHeight": 962690,
  "isActive": true,
  "distinctCounterparties": 13,
  "largestReceivedBtc": 5.46e-06,
  "sampledTransactions": 25,
  "observedAt": "2026-08-16T07:27:01.579Z",
  "error": null
}
```

On-chain Bitcoin address intelligence for AML and compliance, blockchain forensics, wallet analytics and portfolio tracking. Give it one or more Bitcoin addresses and it returns the confirmed balance, lifetime received and sent totals, an activity timeline, live UTXO count, counterparty count, and (optionally) the full transaction history with the direction, amount, fee and counterparties of every transaction. Most tools give you a raw balance; this actor gives you derived intelligence on top.

**📥 [Input](https://apify.com/scrapers_lat/bitcoin-address-intelligence-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/bitcoin-address-intelligence-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/bitcoin-address-intelligence-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/bitcoin-address-intelligence-scraper/examples)**

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify\&logoColor=white)
![Coverage](https://img.shields.io/badge/Chain-Bitcoin%20Mainnet-f7931a)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)
![Billing](https://img.shields.io/badge/Billing-Pay%20per%20result-brightgreen)

### Table of contents

- [What it does](#what-it-does)
- [Use cases](#use-cases)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [Transaction rows](#transaction-rows)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)

### What it does

For each Bitcoin address you provide, the actor returns one enriched intelligence record:

- **Balances**: confirmed balance in BTC and satoshis, plus pending mempool balance change.
- **Lifetime totals**: total received and total sent, ever.
- **Activity**: confirmed transaction count, funded and spent output counts, live UTXO count, and unconfirmed transaction count.
- **Timeline**: first seen and last seen (time and block height) so you can gauge account age and recency.
- **Derived intelligence**: address script type (P2PKH, P2SH, P2WPKH, P2TR), distinct counterparty count, largest single amount received, and an active flag.

Turn on **Include Transaction History** to also get one row per transaction, each with its direction (sent or received relative to the queried address), amount, fee, confirmations, block time and the list of counterparties involved.

Turn on the optional **AI Risk Profile** add-on and each address also gets an AI-written, 2-3 sentence AML / forensics risk assessment that reads the on-chain stats for you (dormant vs active wallet, whale, high-churn or mixer-like behavior, exchange-like consolidation) plus a risk level and behavior tags.

Supported addresses: legacy (`1...`), P2SH (`3...`) and native SegWit and Taproot (`bc1...`). Extended public keys (xpub) are out of scope. The actor reads public Bitcoin blockchain data and works on any mainnet address.

### Use cases

- **Bitcoin AML and KYC compliance checks**: screen a BTC wallet address for balance, activity and counterparty exposure before onboarding or payout.
- **Blockchain forensics and investigations**: profile a suspect address, spot dormant vs active wallets and high-churn or mixer-like behavior for a case.
- **Crypto exchange and OTC desk risk scoring**: batch-check deposit and withdrawal addresses and get an AI risk verdict per address.
- **Bitcoin whale and wallet tracking**: monitor large-balance addresses, lifetime received and sent totals, and recent movement.
- **Portfolio and treasury monitoring**: track confirmed balance, UTXO count and pending mempool activity across many addresses at once.
- **Transaction history export for accounting or audit**: pull every transaction for an address with direction, amount, fee and counterparties as CSV or Excel.
- **Fraud and scam-address investigation**: check reported scam or ransomware BTC addresses for total received, activity recency and counterparty spread.
- **On-chain analytics and research datasets**: build datasets of Bitcoin address intelligence for models, dashboards or threat feeds.

### Quickstart

1. Paste one Bitcoin address into **Bitcoin Address**, or a list into **Bitcoin Addresses**.
2. Optionally turn on **Include Transaction History** and set **Max Transactions Per Address**.
3. Click **Start**. Results stream into the dataset and can be exported as JSON, CSV or Excel.

### Input reference

| Field | Type | Description |
|-------|------|-------------|
| `address` | string | A single Bitcoin address to analyze. |
| `addresses` | array | A list of Bitcoin addresses to analyze in one run. |
| `includeTransactions` | boolean | Also emit one row per transaction for each address. Default `false`. |
| `maxTransactionsPerAddress` | integer | Cap on confirmed transactions fetched per address when history is included. Default `100`. |
| `includeUnconfirmed` | boolean | Include unconfirmed mempool activity in the address summary. Default `true`. |
| `withAiRisk` | boolean | Paid add-on. Generate an AI AML / forensics risk profile per address from the on-chain stats. Default `false`. Billed only on a usable profile; disabled for free users. |
| `maxAddresses` | integer | Maximum addresses to process this run. Free accounts are capped at 10. |
| `proxyConfiguration` | object | Optional proxy settings. Not required (the data sources are open). |

### Output reference

One row per address (`recordType: "address"`):

| Field | Description |
|-------|-------------|
| `address` | The Bitcoin address. |
| `addressType` | Script type derived from the prefix (P2PKH, P2SH, P2WPKH, P2TR). |
| `balanceSats` / `balanceBtc` | Confirmed balance in satoshis and BTC. |
| `totalReceivedBtc` / `totalSentBtc` | Lifetime received and sent, in BTC. |
| `txCount` | Number of confirmed transactions. |
| `fundedTxoCount` / `spentTxoCount` | Outputs that funded the address, and outputs that were spent. |
| `unconfirmedTxCount` / `unconfirmedBalanceBtc` | Pending mempool activity. |
| `utxoCount` | Number of currently unspent outputs. |
| `firstSeen` / `lastSeen` | Block time of the earliest and most recent analyzed transaction. |
| `firstSeenHeight` / `lastSeenHeight` | Block heights for the timeline. |
| `isActive` | Whether the address has any confirmed activity. |
| `distinctCounterparties` | Count of distinct other addresses seen across analyzed transactions. |
| `largestReceivedBtc` | Largest single amount received in one transaction. |
| `sampledTransactions` | Number of transactions analyzed for the derived stats. |
| `aiRiskProfile` | Optional AI-written 2-3 sentence AML / forensics risk assessment (only when the AI Risk Profile add-on is on). |
| `aiRiskLevel` | Optional AI risk level: `low`, `medium` or `high`. |
| `aiRiskTags` | Optional AI behavior tags, e.g. `dormant`, `whale`, `exchange-like`, `high-churn`. |
| `observedAt` | When the record was collected. |
| `error` | Error message, or `null`. |

### Transaction rows

When **Include Transaction History** is on, each address is followed by transaction rows (`recordType: "transaction"`):

| Field | Description |
|-------|-------------|
| `txid` | Transaction id. |
| `direction` | `sent` or `received` relative to the queried address. |
| `amountBtc` | Net amount for the queried address in this transaction. |
| `feeBtc` | Transaction fee. |
| `confirmations` | Confirmations (chain tip height minus block height plus one). |
| `blockTime` / `blockHeight` | When and where the transaction confirmed. |
| `counterparties` | Other addresses involved in the transaction. |

### Run via API and CLI

```bash
apify call scrapers_lat/bitcoin-address-intelligence-scraper \
  --input='{"addresses":["1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"],"includeTransactions":true,"maxTransactionsPerAddress":100}'
```

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~bitcoin-address-intelligence-scraper/runs?token=YOUR_TOKEN" \
  -H "content-type: application/json" \
  -d '{"addresses":["1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"]}'
```

### Fetch results

```bash
curl "https://api.apify.com/v2/acts/scrapers_lat~bitcoin-address-intelligence-scraper/runs/last/dataset/items?token=YOUR_TOKEN&clean=true&format=json"
```

Swap `format=json` for `csv` or `xlsx` to download a spreadsheet.

### Billing and limits

This actor is billed pay per result:

- **Address intelligence result** at $0.012 per row. Every address record and every transaction row counts as one result.
- **Full transaction history add-on** at $0.008, charged once per address whose full history is successfully fetched (only when **Include Transaction History** is on and the fetch returns at least one transaction).
- **AI risk profile add-on** at $0.012, charged once per address, only when the **AI Risk Profile** add-on is on and a usable AI risk assessment is produced. This add-on is opt-in (default off), uses an AI model, and is disabled for free Apify users.

You are never charged for a failed lookup: an invalid or unreadable address produces an error row with no charge. Free Apify accounts are capped at 10 addresses per run. Set a spend limit in the run options and the actor stops emitting billable rows once the limit is reached.

### FAQ and troubleshooting

**Which address formats are supported?** Legacy (`1...`), P2SH (`3...`), native SegWit (`bc1q...`) and Taproot (`bc1p...`) mainnet addresses. Extended public keys (xpub) are not supported.

**Why is `firstSeen` recent for a very old, very busy address?** The timeline and counterparty stats are derived from the analyzed transactions. For addresses with tens of thousands of transactions, the actor analyzes the most recent ones, so the timeline reflects recent activity. Increase **Max Transactions Per Address** to analyze deeper history.

**Are balances accurate?** Yes. Balance, total received and total sent come directly from the chain and reflect confirmed on-chain state at the moment of the run.

**Do I need a proxy or an API key?** No. The actor reads public blockchain data and needs no key. A proxy is optional.

**Can I track many addresses at once?** Yes. Provide a list in **Bitcoin Addresses**; each returns its own intelligence record.

# Actor input Schema

## `address` (type: `string`):

A single Bitcoin address to analyze, for example 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa. Supports legacy (1...), P2SH (3...), and native SegWit / Taproot (bc1...) addresses. Use the Addresses field for multiple.

## `addresses` (type: `array`):

A list of Bitcoin addresses to analyze in one run. Each address returns one enriched intelligence record.

## `includeTransactions` (type: `boolean`):

When on, also emit one row per transaction for each address (txid, direction, amount, fee, confirmations, counterparties). Charged as a separate add-on per address whose history is fetched.

## `maxTransactionsPerAddress` (type: `integer`):

Cap the number of confirmed transactions fetched per address when transaction history is included. Higher values fetch deeper history but take longer.

## `withAiRisk` (type: `boolean`):

When on, use AI to turn the on-chain stats (balance, lifetime received/sent, tx count, recency, counterparties) into a concise 2-3 sentence AML / forensics risk profile per address (dormant vs active, whale, high-churn/mixer-like, exchange-like). Uses an AI model and is billed only when a usable profile is produced. Disabled for free Apify users.

## `includeUnconfirmed` (type: `boolean`):

Include unconfirmed mempool activity in the address summary (unconfirmed transaction count and pending balance change).

## `maxAddresses` (type: `integer`):

Maximum number of addresses to process in this run. Free Apify accounts are capped at 10 per run.

## `proxyConfiguration` (type: `object`):

Optional proxy settings. The data sources are open, so a proxy is not required, but residential proxy can improve reliability under heavy load.

## Actor input object example

```json
{
  "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
  "includeTransactions": false,
  "maxTransactionsPerAddress": 100,
  "withAiRisk": false,
  "includeUnconfirmed": true,
  "maxAddresses": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
    "maxAddresses": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/bitcoin-address-intelligence-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 = {
    "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
    "maxAddresses": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/bitcoin-address-intelligence-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 '{
  "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
  "maxAddresses": 100
}' |
apify call scrapers_lat/bitcoin-address-intelligence-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/bitcoin-address-intelligence-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/bUpNSn3uewWXFImp2/builds/5BtUX35vUcjJqhXjj/openapi.json
