App

Endpoints

Context API Access and Setup

The Spur Context API provides a lookup capability for individual IP addresses. By default, the data returned by our API reflects what we know at this moment. It is a real-time representation of our IP address data. Accessing historical records is possible with an additional add-on subscription.

All Context API authentication is performed using a Token header.

BASE URL
https://api.spur.us

Don't have a token yet?

Visit the Spur dashboard and purchase a subscription today!

Query Arguments

CodeDescription
dtA datetime in the format YYYYmmdd. This argument is only valid for subscriptions with access to historical records.

Response Codes

CodeDescription
200The request succeeded.
400Bad input provided; IP must be a public IPv4 or IPv6 address.
401Access is denied; your token is most likely invalid.
403Your token is valid but does not have access to the Context API.
429Your account has insufficient queries to perform this action.
500An error occurred.

Response Headers

CodeDescription
x-balance-remainingThe number of queries remaining in this billing cycle.
x-result-dtThe date for which this response is sourced in the format YYYYmmdd. When performing historical lookups, this date indicates that the IP context response is from the YYYYmmdd data feed.

The IP Context Object

The IP Context Object summarizes all available information for an IP address. It is provided as a single dictionary. All fields not explicitly marked as required may be omitted if their value is null.

Attributes
asobject

Container for BGP autonomous system information.

clientobject

Descriptive data about the connecting client.

infrastructurestring

Infrastructure type.

ipstring

IPv4 address associated with the connection.

locationobject

Location information of the IP or user.

risksarray of strings

List of identified risk factors or behaviors.

servicesarray of strings

List of services or protocols in use (e.g., OPENVPN, IPSEC).

tunnelsarray of objects

Information about tunneling methods (VPN, TOR, etc.) used.

THE IP CONTEXT OBJECT
{
"as": {
"number": 30083,
"organization": "AS-30083-GO-DADDY-COM-LLC"
},
"client": {
"behaviors": ["TOR_PROXY_USER"],
"concentration": {
"city": "Weldon Spring",
"country": "US",
"density": 0.202,
"geohash": "9yz",
"skew": 45,
"state": "Missouri"
},
"count": 14,
"countries": 1,
"proxies": ["LUMINATI_PROXY", "SHIFTER_PROXY"],
"spread": 4941431,
"types": ["MOBILE", "DESKTOP"]
},
"infrastructure": "DATACENTER",
"ip": "148.72.164.186",
"location": {
"city": "St Louis",
"country": "US",
"state": "Missouri"
},
"risks": ["WEB_SCRAPING", "TUNNEL"],
"services": ["IPSEC", "OPENVPN"],
"tunnels": [
{
"anonymous": true,
"entries": ["148.72.164.179"],
"exits": ["148.72.164.177"],
"operator": "NORD_VPN",
"type": "VPN"
}
]
}

Lookup an IP Address

Retrieves an IP Context Object by IPv4 or IPv6 address. An IP Context Object summarizes all available information about the queried IP address. Some fields are optional and will be omitted if not available.

GET /v2/context/:ip
curl https://api.spur.us/v2/context/148.72.164.186 \
-H "Token: SPUR_TOKEN"
RESPONSE
{
"as": {
"number": 30083,
"organization": "AS-30083-GO-DADDY-COM-LLC"
},
"client": {
"behaviors": ["TOR_PROXY_USER"],
"concentration": {
"city": "Weldon Spring",
"country": "US",
"density": 0.202,
"geohash": "9yz",
"skew": 45,
"state": "Missouri"
},
"count": 14,
"countries": 1,
"proxies": ["LUMINATI_PROXY", "SHIFTER_PROXY"],
"spread": 4941431,
"types": ["MOBILE", "DESKTOP"]
},
"infrastructure": "DATACENTER",
"ip": "148.72.164.186",
"location": {
"city": "St Louis",
"country": "US",
"state": "Missouri"
},
"risks": ["WEB_SCRAPING", "TUNNEL"],
"services": ["IPSEC", "OPENVPN"],
"tunnels": [
{
"anonymous": true,
"entries": ["148.72.164.179"],
"exits": ["148.72.164.177"],
"operator": "NORD_VPN",
"type": "VPN"
}
]
}

The Tag Metadata Object

The Tag Metadata Object includes analysis, statistics, and metrics for a service tag.

Attributes
allowsCryptostring

Whether the service supports or facilitates crypto-based payments or platforms.

allowsFreeAccessstring

Whether the service is available for free usage.

allowsMultihopstring

Whether the service offers multi-hop or chaining functionalities.

allowsTorrentsstring

Whether the service permits torrent or P2P file-sharing traffic.

allowsWhiteLabelstring

Indicates whether white-label or rebranded versions of the service exist.

categoriesarray of strings

Product categories for bandwidth reselling and routing.

descriptionstring

A free-text description of the service or entity.

isAnonymousstring

Whether the service or infrastructure primarily aims to anonymize user traffic.

isCallbackProxystring

Whether the service includes callback or reverse-proxy functionalities.

isEnterprisestring

Whether the service or platform is oriented toward enterprise usage.

isInactivestring

Whether the service is currently inactive or defunct.

isNoLogstring

Whether the service claims a 'no logging' policy.

metricsobject
namestring

Human-readable name of the service or entity.

platformsarray of strings

Operating systems and environments supported by this service.

protocolsarray of strings

Protocols or services used for network traffic.

tagstring

Unique identifier or tag for this service or entity.

targetingTypesarray of strings

Possible granularities for configuring a service exit or route.

websitestring

Primary website or homepage for the service.

THE TAG METADATA OBJECT
{
"allowsCrypto": "false",
"allowsFreeAccess": "false",
"allowsMultihop": "false",
"allowsTorrents": "false",
"allowsWhiteLabel": "true",
"categories": ["RESIDENTIAL_PROXY", "DATACENTER_PROXY", "MOBILE_PROXY", "ISP_PROXY"],
"description": "OxyLabs is the second largest proxy provider tracked. Their users are sourced through SDKs embedded in mobile applications and browser extensions. These users are likely unaware that they agreed to contribute to this proxy network.",
"isAnonymous": "true",
"isCallbackProxy": "true",
"isEnterprise": "false",
"isInactive": "false",
"isNoLog": "true",
"metrics": {
"averageDeviceCount": "37.20332478669546",
"churnRate": "0.08675012801772562",
"distinctASNs": "25334",
"distinctCountries": "235",
"distinctIPs": "6367903",
"distinctISPs": "67413"
},
"name": "Oxylabs",
"platforms": ["ROUTER"],
"protocols": [],
"tag": "OXYLABS_PROXY",
"targetingTypes": ["CITY", "STATE", "COUNTRY", "ASN"],
"website": "https://oxylabs.io"
}

Lookup Tag Metadata

Retrieves a Tag Metadata Object which contains a summary of metrics and information for the provided tag.

GET /v2/metadata/tags/:tag
curl https://api.spur.us/v2/metadata/tags/OXYLABS_PROXY \
-H "Token: SPUR_TOKEN"
RESPONSE
{
"allowsCrypto": "false",
"allowsFreeAccess": "false",
"allowsMultihop": "false",
"allowsTorrents": "false",
"allowsWhiteLabel": "true",
"categories": ["RESIDENTIAL_PROXY", "DATACENTER_PROXY", "MOBILE_PROXY", "ISP_PROXY"],
"description": "OxyLabs is the second largest proxy provider tracked. Their users are sourced through SDKs embedded in mobile applications and browser extensions. These users are likely unaware that they agreed to contribute to this proxy network.",
"isAnonymous": "true",
"isCallbackProxy": "true",
"isEnterprise": "false",
"isInactive": "false",
"isNoLog": "true",
"metrics": {
"averageDeviceCount": "37.20332478669546",
"churnRate": "0.08675012801772562",
"distinctASNs": "25334",
"distinctCountries": "235",
"distinctIPs": "6367903",
"distinctISPs": "67413"
},
"name": "Oxylabs",
"platforms": ["ROUTER"],
"protocols": [],
"tag": "OXYLABS_PROXY",
"targetingTypes": ["CITY", "STATE", "COUNTRY", "ASN"],
"website": "https://oxylabs.io"
}

Lookup API Token Status

Retrieves the status of your API token, the number of queries remaining for your billing period, and your service tier.

GET /status
curl https://api.spur.us/status \
-H "Token: SPUR_TOKEN"
RESPONSE
{
"active": true,
"queriesRemaining": 49283,
"serviceTier": "online"
}

Frequent Questions

Do you have a bulk lookup endpoint?

No. We require that each IP be submitted individually.

Where is the last-seen time?

We return the assessment as of the time of the query. We age off any data that we believe is no longer accurate.

Enterprise API subscriptions have the ability to add historical lookups to their API subscription. If you are interested, please contact your Spur sales rep or sales@spur.us.

How do I get a token?

If you purchased our API from our website or have linked your enterprise plan to an online account, you can view your token at https://app.spur.us/settings/api. Otherwise, contact your Spur rep for access information.

How can I evaluate the API?

We do not offer a free tier, but monthly plans start at $125 from https://app.spur.us/settings/plans. If you are interested in an enterprise license, please contact sales@spur.us.