Network Data — CSV

On this page

BGP routing and RIR registry data covering the whole IPv4 and IPv6 address space, as CSV tables: BGP prefixes with their origin ASN, reachability and bogon flag; RIR registry ranges with organisation, country and registry; and an ASN list with address and prefix statistics. No geolocation.

  • Format CSV
  • Archive bigdatacloud-network-csv.zip
  • 7 files
  • IPv4 + IPv6
  • Updated daily

At a glance

What's in it

BGP prefixes with origin ASN and reachability; RIR registry ranges with organisation and country; an ASN list.

What it's for

Network operations, security, research, and adding ASN and registrant details to your own logs and records.

Not in it

Geolocation (see Compact CSV or Complete CSV); ASN operational areas and proxy, Tor and VPN lists (see Complete CSV).

Scale

Millions of BGP prefixes and registry ranges. Manifest.csv has the exact counts for each release.

Licence

Flat Data Standard Licence: internal use by your company and its employees only.

Files in the archive

FileWhat it holdsKey / join column
BgpPrefixes-IPv4.csvIPv4 BGP prefixes with origin ASN, reachability, bogon flag and registry statusAsn
BgpPrefixes-IPv6.csvIPv6 BGP prefixes, same columnsAsn
RirInetnums-IPv4.csvIPv4 registry ranges with organisation, country, registry and last-modified time— (match by IP)
RirInetnums-IPv6.csvIPv6 registry ranges, same columns— (match by IP)
Asns-Basic.csvASN identity and address and prefix statisticsAsn
README.txtPackage overview and links—
Manifest.csvBuild time, data timestamps and row totals, then one row per other file in that ZIP with its byte count—

Fields

BgpPrefixes-IPv4.csv / BgpPrefixes-IPv6.csv

Network

One row per BGP prefix. Both files have the same columns.

FieldTypeExampleDescription
Prefixprefix139.130.0.0/16CIDR prefix.
Asnint1221Origin ASN. Key into Asns-Basic.csv. Present when the prefix is announced in BGP.
IsReachableboolTrueTrue if the prefix is announced in BGP and globally reachable. False if the prefix isn't announced in BGP or is a bogon.
IsBogonboolFalseTrue if the prefix is announced in BGP but sits in space that shouldn't be announced (reserved, available or unassigned). Private and reserved space that isn't announced, such as 10.0.0.0/8, is False; its RegistryStatus shows it as reserved.
RegistryStatusstringAssignedRegistry status: Assigned, Available, Reserved, or Undefined where the registry gives none.
RegistrystringApnicRegistry for the prefix: Afrinic, Apnic, Arin, Iana, Lacnic, Ripe, or Undefined where the registry gives none.

RirInetnums-IPv4.csv / RirInetnums-IPv6.csv

Network

One row per registry range (inetnum or inet6num). Both files have the same columns.

FieldTypeExampleDescription
RangeStartip139.130.0.0First address in the range (inclusive). IPv4 in dotted-quad form; IPv6 in compressed text form (2001:8000::).
RangeEndip139.130.255.255Last address in the range (inclusive). Same notation.
Organisationstring"Telstra Limited"Organisation that holds the range, from registry data. Very long names are shortened and end in ... A few names contain line breaks, inside the quotes.
Countrystring"AU"Country for the range as the registry publishes it: usually a two-letter code, sometimes several codes separated by spaces, or free text.
Registrystring"Apnic"Registry the record comes from: Afrinic, Apnic, Arin, Jpnic, Krnic, Lacnic, Radb, Ripe or Twnic.
RegistryLastModifiedtimestamp2024-05-10T00:50:24.0000000ZWhen the registry last changed the record: ISO 8601 date and time in UTC.

Lookup files

Network

Asns-Basic.csv and Manifest.csv are defined in the Lookup files reference: Asns-Basic · Manifest.

How the files join

README.txt gives an overview of the package. No ID key: match RirInetnums-* by IP address or range. Manifest.csv is releasemetadata.BgpPrefixes-IPv4.csvBgpPrefixes-IPv6.csvsame schemaPKPrefixFKAsn?present when announced+4 more columnsAsns-Basic.csvPKAsn+9 more columnsREADME.txtpackage overviewRirInetnums-IPv4.csvRirInetnums-IPv6.csvsame schemaRangeStartRangeEnd+4 more columnsManifest.csvrelease metadataDescription+4 more columnsAsn
README.txt gives an overview of the package. NoID key: match RirInetnums-* by IP address orrange. Manifest.csv is release metadata.BgpPrefixes-IPv4.csvBgpPrefixes-IPv6.csvsame schemaPKPrefixFKAsn?present when announced+4 more columnsAsns-Basic.csvPKAsn+9 more columnsREADME.txtpackage overviewRirInetnums-IPv4.csvRirInetnums-IPv6.csvsame schemaRangeStartRangeEnd+4 more columnsManifest.csvrelease metadataDescription+4 more columnsAsn
PK primary keyFK foreign key (? = optional) many zero or one
FromColumnToNotes
BgpPrefixes-IPv4.csv,BgpPrefixes-IPv6.csvAsnAsns-Basic.csv AsnPresent when the prefix is announced in BGP.

Not joined: match RirInetnums-* by IP address or range, and Manifest.csv describes the release.

BGP prefixes and registry ranges are separate views of the same address space: they don't share a key, and their boundaries don't line up. Match each one to an IP on its own.

Sample data

Sample rows from the 1 October 2026 release. Values change with each daily update.

BgpPrefixes-IPv4.csv: reserved, unannounced, announced and bogon prefixes

Prefix,Asn,IsReachable,IsBogon,RegistryStatus,Registry
0.0.0.0/8,,False,False,Reserved,Iana
1.0.8.0/21,,False,False,Assigned,Apnic
1.37.82.0/24,132199,True,False,Assigned,Apnic
139.130.0.0/16,1221,True,False,Assigned,Apnic
192.168.0.0/17,,False,False,Reserved,Iana
205.209.150.0/24,23338,False,True,Reserved,Arin

BgpPrefixes-IPv6.csv

Prefix,Asn,IsReachable,IsBogon,RegistryStatus,Registry
::/8,,False,False,Reserved,Iana
2001:8000::/20,1221,True,False,Assigned,Apnic

RirInetnums-IPv4.csv / RirInetnums-IPv6.csv

RangeStart,RangeEnd,Organisation,Country,Registry,RegistryLastModified
1.0.8.0,1.0.15.255,"CHINANET Guangdong province network Data Communi..","CN","Apnic",2021-06-15T08:05:48.0000000Z
1.37.0.0,1.37.255.255,"Globe Telecoms","PH","Apnic",2021-02-17T07:28:15.0000000Z
139.130.0.0,139.130.255.255,"Telstra Limited","AU","Apnic",2024-05-10T00:50:24.0000000Z
2001:8000::,2001:8fff:ffff:ffff:ffff:ffff:ffff:ffff,"Telstra Limited","AU","Apnic",2024-05-10T00:50:24.0000000Z

Joined result for 139.130.4.5 (from the DuckDB example below): prefix 139.130.0.0/16, AS1221 ASN-TELSTRA (Telstra Limited), reachable, not a bogon. Its registry range is 139.130.0.0–139.130.255.255, Telstra Limited, AU.

Behaviour and edge cases

Supplied fields

Each row fills the fields that apply to it, and each field description says when it is supplied. Check that a field has a value before you use it. In BgpPrefixes-*, Asn is supplied where the prefix is announced in BGP. Registry files have a value in every column. In Asns-Basic.csv, Organisation is supplied for every ASN (Private Use AS for an ASN with no registration record). AsnName, Registry and RegisteredCountry are supplied where the registry publishes them.

Private and reserved addresses

Reserved space appears as BGP rows with RegistryStatus Reserved and Registry Iana (for example 0.0.0.0/8 and 192.168.0.0/17). Registry ranges show whatever the registries publish for that space.

Unannounced prefixes and bogons

Asn is supplied where the prefix is announced in BGP. A prefix that isn't announced has IsReachable False and isn't globally reachable. Its RegistryStatus still tells you whether the space is assigned, available or reserved (for example 1.0.8.0/21: Assigned, Apnic). A few prefixes have an Asn but IsReachable False: these are bogons, announced in space that shouldn't be announced, with IsBogon True (for example 205.209.150.0/24).

No overlaps

BGP prefixes don't overlap, and registry ranges don't overlap, so an address matches at most one row in each file.

File conventions

UTF-8. The BGP, registry and ASN files start with a byte-order mark (BOM), so use a BOM-aware reader. Lines end in CRLF in every file, Manifest.csv included. Text fields can be double-quoted, and a few registry Organisation values contain line breaks inside the quotes, so read the files with a CSV parser rather than line by line. Booleans are True/False. Full list: CSV conventions.

Download

Download from your BigDataCloud account, or automate it with your API key:

curl -fL -o bigdatacloud-network-csv.zip "https://www.bigdatacloud.com/download?package=network&format=csv&key=YOUR_API_KEY"

Prefer not to put the key in URLs?

Send the key in the x-bdc-key header and download in two steps: read the link from the Location header, then fetch it without your key.

URL=$(curl -s -D - -o /dev/null -H 'x-bdc-key: YOUR_API_KEY' \
  "https://www.bigdatacloud.com/download?package=network&format=csv" \
  | awk 'tolower($1)=="location:" { sub(/\r$/, "", $2); print $2 }')
curl -fo bigdatacloud-network-csv.zip "${URL:?no download link: check the key and package}"

Don't add -L to this command: curl would send your key on with the download.

This saves bigdatacloud-network-csv.zip (files). Scheduling, checksums and parameters: Downloads & automation.

Updates and integrity

  • Updated daily. Download on any schedule that suits you; updates are included in your subscription.
  • Manifest.csv records the build time (Build Complete), the data timestamps and the row totals, then one row per other file in that ZIP with its byte count, so you can check a complete download and load. To check the ZIP itself, see Check a download.

Code samples

IP to origin ASN and AS name (DuckDB, IPv4). DuckDB reads the CSV files directly, so you don't need to load them into a database first.

import duckdb

con = duckdb.connect()
# IPv4 dotted-quad -> integer, so prefixes can be compared numerically
con.sql("""
CREATE MACRO ip4(ip) AS
  (split_part(ip,'.',1)::BIGINT << 24) + (split_part(ip,'.',2)::BIGINT << 16)
+ (split_part(ip,'.',3)::BIGINT << 8)  +  split_part(ip,'.',4)::BIGINT
""")
print(con.sql("""
WITH p AS (
  SELECT *, split_part(Prefix,'/',1) AS net, split_part(Prefix,'/',2)::INT AS len
  FROM read_csv('BgpPrefixes-IPv4.csv', all_varchar = true)
)
SELECT p.Prefix, p.Asn, a.AsnName, a.Organisation, p.IsReachable, p.IsBogon
FROM p
LEFT JOIN read_csv('Asns-Basic.csv', all_varchar = true) a USING (Asn)
WHERE ip4('139.130.4.5') BETWEEN ip4(p.net) AND ip4(p.net) + (1::BIGINT << (32 - p.len)) - 1
""").fetchall())
# [('139.130.0.0/16', '1221', 'ASN-TELSTRA', 'Telstra Limited', 'True', 'False')]

For IPv6 or high volumes, load the files into your database once, store prefixes and range bounds as numbers or your database's IP type, and index them.

Related