Skip to main content

A simple Python CLI + library for looking up ASNs by IP or AS number. Uses BBOT.IO API.

Project description

ASNDB

Python Version PyPI - Version License Ruff Tests

A simple Python CLI + library for instant lookup of ASN data by IP address, AS number, or organization. Uses BBOT.IO API (asndb.api.bbot.io).

ASNs are automatically cached for instant lookups and minimal network traffic.

Installation

uv tool install asndb

# or quick run with uvx
uvx asndb

# or using pip
uv tool install asndb

Usage (CLI)

Note: anonymous queries are limited to 10/minute. If you need more, you can purchase an API key at the BBOT.IO Developer Portal. Export the key as an environment variable:

export BBOT_IO_API_KEY=<your_api_key>

IP Lookup

asndb ip 1.1.1.1

Output:

{
  "asn": 13335,
  "asn_name": "CLOUDFLARENET",
  "country": "US",
  "ip": "1.1.1.1",
  "org": "Cloudflare, Inc.",
  "org_id": "CLOUD14-ARIN",
  "rir": "ARIN",
  "subnets": [
    "1.0.0.0/24",
    "1.0.1.0/24"
  ]
}

AS Number Lookup

asndb asn 13335

Output:

{
  "asn": 13335,
  "asn_name": "CLOUDFLARENET",
  "country": "US",
  "ip": "1.1.1.1",
  "org": "Cloudflare, Inc.",
  "org_id": "CLOUD14-ARIN",
  "rir": "ARIN",
  "subnets": [
    "1.0.0.0/24",
    "1.0.1.0/24"
  ]
}

Organization Lookup

# Look up an organization
asndb org CLOUD14-ARIN

Output:

{
  "asns": [
    13335,
    14789,
    395747,
    394536
  ]
}

CLI Help

$ uv run asndb --help
                                                                                              
 Usage: asndb [OPTIONS] COMMAND [ARGS]...                                                     
                                                                                              
╭─ Options ──────────────────────────────────────────────────────────────────────────────────╮
│ --install-completion          Install completion for the current shell.                    │
│ --show-completion             Show completion for the current shell, to copy it or         │
│                               customize the installation.                                  │
│ --help                        Show this message and exit.                                  │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ─────────────────────────────────────────────────────────────────────────────────╮
│ ip    Lookup ASN by IP address                                                             │
│ asn   Lookup ASN by AS number                                                              │
│ org   Get all the ASNs for an organization, by its registered organization ID, e.g.        │
│       GOGL-ARIN                                                                            │
╰────────────────────────────────────────────────────────────────────────────────────────────╯

Usage (Python)

from asndb import ASNDB

# Create a new ASNDB client
asndb = ASNDB()


# Look up an IP address
asn = asndb.lookup_ip_sync("1.1.1.1")
# {
#   "asn": 13335,
#   "asn_name": "CLOUDFLARENET",
#   "country": "US",
#   "ip": "1.1.1.1",
#   "org": "Cloudflare, Inc.",
#   "org_id": "CLOUD14-ARIN",
#   "rir": "ARIN",
#   "subnets": [
#     "1.0.0.0/24",
#     "1.0.1.0/24"
#   ]
# }

# Look up an AS number
asn = asndb.lookup_asn_sync(13335)
# {
#   "asn": 13335,
#   "asn_name": "CLOUDFLARENET",
#   "country": "US",
#   "ip": "1.1.1.1",
#   "org": "Cloudflare, Inc.",
#   "org_id": "CLOUD14-ARIN",
#   "rir": "ARIN",
#   "subnets": [
#     "1.0.0.0/24",
#     "1.0.1.0/24"
#   ]
# }

# Look up an organization
org = asndb.lookup_org_sync("CLOUD14-ARIN")
# {
#   "asns": [
#     13335,
#     14789,
#     395747,
#     394536
#   ]
# }

Environment Variables

You can customize the behavior of the ASNDB client by exporting the following environment variables:

  • BBOT_IO_API_KEY: Your BBOT.IO API key.
  • ASNDB_BASE_URL: The base URL of the ASNDB API (default: https://asndb.api.bbot.io/v1).
  • ASNDB_TIMEOUT: The timeout for the ASNDB API requests (default: 60 seconds).
  • ASNDB_CACHE_SIZE: The size of the cache for the ASNDB API requests (default: 10000).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asndb-1.0.2.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

asndb-1.0.2-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file asndb-1.0.2.tar.gz.

File metadata

  • Download URL: asndb-1.0.2.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for asndb-1.0.2.tar.gz
Algorithm Hash digest
SHA256 28c4c86cb390742ecaee4544ec4ca553946ff3d67d7d328a8f0e1d88e94d99e8
MD5 b336c06c4048ae0dae8c868fe8b3101c
BLAKE2b-256 0dcfc76454e691a96881732cf868977c2b5ad6bc03356f8e33d9fe885ea417cd

See more details on using hashes here.

File details

Details for the file asndb-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: asndb-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for asndb-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2c170fbc3ad3ce1e98bc353d4801765d3a691b852ddd144306900ed273e337bf
MD5 513e60016c52213a494b6f3a072129c4
BLAKE2b-256 3a1edc153bcbaacd7f80264aa5f06e888f4873144ac11978d7fd05fc7a848a60

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page