API

IPv6Matrix gives open access to all analysed crawler data via a RESTful API.

The API has been designed to be easy to understand and to return information with an appropriate level of detail, in a variety of common data formats.

Accessing the API

To access data from the API an HTTP GET request must be made to a resource URI.

An example request would be to http://ipv6matrix.org/data/hosts/group-country which returns IPv6 Host data by date and grouped by country.

Data formats

The API offers JSON, XML, HTML and CSV data formats.

The data format is specified as the first identifier or as a subdomain. For example: ipv6matrix.org/json or json.ipv6matrix.org.

JSON

/json returns an application/json response. All JSON responses are heirachically structured by key, in order of the data selection defined by the URI. This simplifies data access and reduces response sizes.

For example:

// request URI: /json/hosts/group-country
// JSON response, grouped by date then country:

{
  "Mon Sep 13 2010 01:00:00 GMT+0100 (BST)" : {
    "AD" : { "hosts" : 38, "hosts6" : 0 },
    "AE" : { "hosts" : 1087, "hosts6" : 5 },
    ...
  },
  "Sat Oct 23 2010 01:00:00 GMT+0100 (BST)" : {
    "AD" : { "hosts" : 38, "hosts6" : 0 },
    "AE" : { "hosts" : 1093, "hosts6" : 5 },
    ...
  },
  ...
}

XML

/xml returns a text/xml response. All XML responses are mirror representations of the database reponse, returning each row and column as an individual tag.

For example:

// request URI: /xml/hosts/group-country
// XML response:

<response>
  <row>
    <date>Mon Sep 13 2010 01:00:00 GMT+0100 (BST)</date>
    <hosts>38</hosts>
    <hosts6>0</hosts6>
    <country>AD</country>
  </row>
  <row>
    <date>Mon Sep 13 2010 01:00:00 GMT+0100 (BST)</date>
    <hosts>1087</hosts>
    <hosts6>5</hosts6>
    <country>AE</country>
  </row>
  ...
</response>

HTML

/html returns a text/html response. All HTML responses are mirror representations of the database reponse, returning the data in a table.

For example:

// request URI: /html/hosts/group-country
// HTML response:

<table>
  <tr>
    <td>date</td>
    <td>hosts</td>
    <td>hosts6</td>
    <td>country</td>
  </tr>
  <tr>
    <td>Mon Sep 13 2010 01:00:00 GMT+0100 (BST)</td>
    <td>38</td>
    <td>0</td>
    <td>AD</td>
  </tr>
  <tr>
    <td>Mon Sep 13 2010 01:00:00 GMT+0100 (BST)</td>
    <td>1087</td>
    <td>5</td>
    <td>AE</td>
  </tr>
  ...
</table>

CSV

/csv returns a text/plain response. All CSV responses are mirror representations of the database reponse, returning the data in a comma seperated format.

For example:

// request URI: /csv/hosts/group-country
// CSV response:

date,hosts,hosts6,country
Mon Sep 13 2010 01:00:00 GMT+0100 (BST),38,0,AD
Mon Sep 13 2010 01:00:00 GMT+0100 (BST),1087,5,AE
...

Generic request

/data attempts to return the corresponding format to the request's Content-Type header field. If a corresponding format can not be found, a default HTML response will be sent.

For example /data/hosts/group-country will return HTML, to match your browsers default text/html Content-Type.

Resources & URIs

Below is a description of each URI endpoint and the data it returns.

IPv6 Hosts/hosts

The total number of crawled Hosts and how many of those have some IPv6 implementation.

/hosts Summary of total IPv6 Hosts by date.
Returns columns; date, hosts, hosts6.

/hosts/group-:group A more detailed breakdown by group type.
Grouped by either; country, tld or type.
Returns columns;date, hosts, hosts6, :group.

/hosts/group-:group/country-:country Grouped data for a specific country,
any ISO 3166 Alpha-2 country code e.g. fr, gb, us etc.
Returns columns; date, hosts, hosts6, :group.

Column data types:

  • date: Date string
  • hosts: Total number of Hosts
  • hosts6: Total number of IPv6 enabled Hosts
  • :group
    • country: Geo located Alpha-2 country code
    • tld: Top Level Domain (TLD)
    • type: Service type (WWW / MX / NTP / NS)

Dual Stack/dualstack

The total number for each Host IP implementation (IPv6, IPv6, Dual Stack, No IP).

/dualstack Summary of Dual Stack data.
Returns columns; date, hosts, hosts4, hosts6, dualstack, noip.

/dualstack/group-:group A more detailed breakdown.
Grouped by either; country, tld or type.
Returns columns;date, hosts, hosts4, hosts6, dualstack, noip, :group.

/dualstack/group-:group/country-:country Data for a specific country.
Any ISO 3166 Alpha-2 country code e.g. fr, gb, us etc.
Returns columns; date, hosts, hosts4, hosts6, dualstack, noip, :group.

Column data types:

  • date: Date string
  • hosts: Total number of Hosts
  • hosts4: Total number of IPv4 only Hosts
  • hosts6: Total number of IPv6 only Hosts
  • dualstack: Total number of Dual Stack Hosts
  • noip: Total number of Hosts with an IP implementation
  • :group
    • country: Geo located Alpha-2 country code
    • tld: Top Level Domain (TLD)
    • type: Service type (WWW / MX / NTP / NS)

Ping/ping

The average response times over IPv4 and IPv6 for Dual Stack Hosts.

/ping Summary of Ping data.
Returns columns; date, hosts, faster, ping4, ping6.

/ping/group-:group A more detailed breakdown.
Grouped by either; country, tld or type.
Returns columns; date, hosts, faster, ping4, ping6, :group.

/ping/group-:group/country-:country Data for a specific country.
Any ISO 3166 Alpha-2 country code e.g. fr, gb, us etc.
Returns columns; date, hosts, faster, ping4, ping6, :group.

Column data types:

  • date: Date string
  • hosts: Total number of successfully Pinged Dual Stack Hosts
  • faster: Total number of lower IPv6 response times than IPv4
  • ping4: Total sum of IPv4 response time (ms)
  • ping6: Total sum of IPv6 response time (ms)
  • :group
    • country: Geo located Alpha-2 country code
    • tld: Top Level Domain (TLD)
    • type: Service type (WWW / MX / NTP / NS)

Path/path

The average Traceroute length of IPv4 and IPv6 for Dual Stack Hosts.

/path Summary of Path data.
Returns columns; date, hosts, fewer, hops4, hops6.

/path/group-:group A more detailed breakdown.
Grouped by either; country, tld or type.
Returns columns;date, hosts, fewer, hops4, hops6, :group.

/path/group-:group/country-:country Data for a specific country.
Any ISO 3166 Alpha-2 country code e.g. fr, gb, us etc.
Returns columns; date, hosts, fewer, hops4, hops6, :group.

Column data types:

  • date: Date string
  • hosts: Total number of successfully Tracerouted Dual Stack Hosts
  • fewer: Total number of IPv6 Path lengths with fewer Hops than IPv4
  • hops4: Total sum of IPv4 Hop count
  • hops6: Total sum of IPv6 Hop count
  • :group
    • country: Geo located Alpha-2 country code
    • tld: Top Level Domain (TLD)
    • type: Service type (WWW / MX / NTP / NS)

Reacability/reach

The total number of Hosts that are Reachable over each Protocol (HTTP / HTTPS / SMTPS).

/reach Summary of Reachability data.
Returns columns; date, hosts4, hosts6, reach4, reach6.

/reach/group-:group A more detailed breakdown.
Grouped by either; country, tld or service.
Returns columns;date, date, hosts4, hosts6, reach4, reach6, :group.

/reach/group-:group/country-:country Data for a specific country.
Any ISO 3166 Alpha-2 country code e.g. fr, gb, us etc.
Returns columns; date, hosts4, hosts6, reach4, reach6, :group.

Column data types:

  • date: Date string
  • hosts4: Total number of IPv4 services
  • hosts6: Total number of IPv6 services
  • reach4: Total number of successful IPv4 responses
  • reach6: Total number of successful IPv6 responses
  • :group
    • country: Geo located Alpha-2 country code
    • tld: Top Level Domain (TLD)
    • service: Protocol type (HTTP / HTTPS / SMTPS)

Domains/domains

The total number of IPv6 enabled Domains.

/domains Summary of Domains data.
Returns columns; date, domains, domains6, www, ns, mx, ntp.

/domains/group-:group A more detailed breakdown.
Grouped by either; country or tld.
Returns columns; date, domains, domains6, www, ns, mx, ntp, :group.

/domains/group-:group/country-:country Data for a specific country.
Any ISO 3166 Alpha-2 country code e.g. fr, gb, us etc.
Returns columns; date, domains, domains6, www, ns, mx, ntp, :group.

Column data types:

  • date: Date string
  • domains: Total number of Domains
  • domains6: Total number of IPv6 enabled Domains
  • www: Total number of Domains with at least one IPv6 enabled Web service (WWW)
  • ns: Total number of Domains with at least one IPv6 enabled Name service (NS)
  • mx: Total number of Domains with at least one IPv6 enabled Mail service (MX)
  • ntp: Total number of Domains with at least one IPv6 enabled Time service (NTP)
  • :group
    • country: Geo located Alpha-2 country code
    • tld: Top Level Domain (TLD)

Detailed data for a specific domain and domain search functionality.

/domain-:domain All data gathered on a specific :domain by date.
Returns columns; date, country, www_hosts, www_hosts6, mx_hosts, mx_hosts6, ns_hosts, ns_hosts6, ntp_hosts, ntp_hosts6, http4, http6, https4, https6, smtp4, smtp6, faster, pingratio, fewer, hopratio.

/domain/search-:search Search for a domain starting with the string :search.
Returns a list of matched Domains.

Column data types:

  • date: Date string
  • country: Geo located Alpha-2 country code
  • www_hosts: Total number of DNS entries for WWW
  • www_hosts6: Total number of IPv6 DNS entries for WWW
  • mx_hosts6: Total number of DNS entries for MX
  • mx_hosts6: Total number of IPv6 DNS entries for MX
  • ns_hosts6: Total number of DNS entries for NS
  • ns_hosts6: Total number of IPv6 DNS entries for NS
  • ntp_hosts6: Total number of DNS entries for NTP
  • ntp_hosts6: Total number of IPv6 DNS entries for NTP
  • http4: Total number of successful HTTP responses over IPv4
  • http6: Total number of successful HTTP responses over IPv6
  • https4: Total number of successful HTTPS responses over IPv4
  • https6: Total number of successful HTTPS responses over IPv6
  • smtp4: Total number of successful SMTPS responses over IPv4
  • smtp6: Total number of successful SMTPS responses over IPv6
  • faster: Total number of lower IPv6 response times than IPv4
  • pingratio: Ratio of IPv6 to IPv4 Ping (= IPv6 Ping / IPv4 Ping)
  • fewer: Total number of IPv6 Path lengths with fewer Hops than IPv4
  • hopratio: Ratio of IPv6 to IPv4 Path lengths (= IPv6 Path / IPv4 Path)

Country Overview/country-gb

Detailed data for a specific country.

/country-:country All data gathered on for a specific :country by date.
Returns columns; date, country, hosts, hosts4, hosts6, hosts6only, dualstack, noip, pinghosts, faster, ping4, ping6, pathhosts, fewer, hops4, hops6.

Column data types:

  • date: Date string
  • country: Geo located Alpha-2 country code
  • hosts: Total number of Hosts
  • hosts4: Total number of IPv4 enabled Hosts
  • hosts6: Total number of IPv6 enabled Hosts
  • hosts6only: Total number of IPv6 only Hosts
  • dualstack: Total number of Dual Stack Hosts
  • noip: Total number of Hosts without an IP implementation
  • pinghosts: Total number of successfully Pinged Dual Stack Hosts
  • faster: Total number of Hosts with IPv6 Pings lower than IPv4
  • ping4: Total sum of IPv4 Ping
  • ping6: Total sum of IPv6 Ping
  • pathhosts: Total number of successfully Tracerouted Dual Stack Hosts
  • fewer: Total number of Hosts with fewer IPv6 Hops than IPv5
  • hops4: Total sum of IPv4 Hop counts
  • hops6: Total sum of IPv6 Hop counts