API Reference

Integrate ChainAnalyzer via REST API & ScamDB API

Scan API requires a Pro plan. ScamDB read endpoints are free.

Authentication

Scan API requests require a tfk_ prefixed API key. Create one from Dashboard > Settings > API Keys.

Send via X-API-Key header:

curl -H "X-API-Key: tfk_your_key_here" \
     https://chain-analyzer.com/api/v1/public/scan

Base URL

https://chain-analyzer.com/api/v1

Scan API

MethodPathAuthDescription
POST/public/scantfk_Scan an address (supports Bitcoin, Ethereum, Avalanche, Polygon & Solana). Results cached for 30 minutes.
POST/public/scan/batchtfk_Submit a batch scan job (Pro: up to 100 addresses)
GET/public/scan/{job_id}tfk_Check batch job progress
GET/public/scan/{job_id}/resultstfk_Retrieve batch job results
GET/public/healthNoneAPI health check (no auth required)
POST /public/scan

Request

{
  "address": "347QFbejDBdMZFTxpmn6evvvqyXiqZTCd7",
  "chain": "bitcoin"
}

Response

{
  "success": true,
  "address": "347QFbejDBdMZFTxpmn6evvvqyXiqZTCd7",
  "chain": "bitcoin",
  "address_type": "wallet",
  "risk_level": "CRITICAL",
  "risk_score": 0,
  "detection_count": 4,
  "detections": [
    {
      "detector_id": "B2",
      "detector_name": "OFAC_SANCTIONED",
      "severity": "CRITICAL",
      "description": "Address is on OFAC SDN sanctions list",
      "details": { "category": "OFAC_SANCTIONED" }
    }
  ],
  "metadata": {
    "btc_balance": 0.0,
    "total_transactions": 69,
    "is_sanctioned": true
  },
  "ml_anomaly_score": 0.3431,
  "scan_duration_ms": 19045,
  "cached": false
}
POST /public/scan/batch

Submit a batch scan job (Pro: up to 100 addresses)

Request

{
  "addresses": [
    {"address": "DezXAZ8z...", "chain": "solana"},
    {"address": "0x1234...", "chain": "ethereum"}
  ],
  "include_ai_analysis": true,
  "notify_email": "user@example.com"
}

Response

{
  "success": true,
  "job_id": "550e8400-e29b-41d4-a716-446655440000"
}

ScamDB API

Public OSINT API. No authentication required for read endpoints. IP-based rate limiting.

MethodPathAuthDescription
GET/scamdb/lookup/{address}NoneCheck if an address is in ScamDB (free, no auth)
GET/scamdb/entriesNoneList verified ScamDB entries (paginated)
GET/scamdb/entries/{scam_id}NoneGet a single ScamDB entry
GET/scamdb/statsNoneScamDB statistics
GET/scamdb/search?q=...tfk_Full-text search ScamDB (tfk_ key required)
POST/scamdb/reporttfk_Submit a scam report (tfk_ key required)
GET /scamdb/lookup/{address}
curl https://chain-analyzer.com/api/v1/scamdb/lookup/7kMpieh2THdaC5eUvxFJDL3TdsQWVQCwdhsEjLj1eL26

Response

{
  "found": true,
  "entry": {
    "id": "SCAM-001",
    "address": "7kMpieh2THdaC5eUvxFJDL3TdsQWVQCwdhsEjLj1eL26",
    "type": "drainer",
    "severity": "danger",
    "domains": ["solland.cc", "hibit.app"],
    "method": "FCFS airdrop phishing",
    "total_stolen_usd": 3700,
    "verified": true
  },
  "match_type": "exact"
}

Rate Limits

PlanRequests/minDescription
Pro60Scan API
Enterprise300Scan API
Any (IP-based)30ScamDB reads
ScamDB reads: IP-based 30 req/min. A 429 error is returned when exceeded.

Error Codes

CodeDescription
400Bad request (invalid parameters)
401Authentication error (API key is invalid or missing)
403Access denied (plan feature restriction)
404Resource not found
429Rate limit exceeded
500Server error

SDK (Coming Soon)

SDKs for Python, JavaScript, and Go are in development.

Python JavaScript Go

© 2026 ChainAnalyzer. All rights reserved.