IP intelligence API

Know who is behind every IP address.

One request tells you if an IP is a VPN, a proxy, a Tor exit or a data centre. You also get the VPN provider and the evidence behind each flag.

# Check one IP address
$ curl https://api.litedar.com/v1/ip/… \
    -H "Authorization: Bearer $LITEDAR_KEY"
const url = "https://api.litedar.com/v1/ip/…";
const res = await fetch(url, { headers: AUTH });
const ip = await res.json();
import requests

url = "https://api.litedar.com/v1/ip/…"
ip = requests.get(url, headers=AUTH).json()
Starting check…

            
Try:

Signals in every response

  • VPN
  • Proxy
  • Tor exit
  • Private relay
  • Data centre
  • Abuse
  • IPv4 + IPv6

Product

Every flag, with the evidence behind it.

No black-box score. Each answer gives simple flags, a published score, and the reason for each flag.

Yes or no, per signal

VPN, proxy, Tor, private relay, hosting and abuse. null means that we do not check this signal yet.

Score and level

A 0–100 score from a published rule, and a level: low, medium or high. You choose the action.

Why we say so

Provider, claimed location, confidence, kind of evidence, listed range, and the first and last date we saw it.

Network and location

ASN, AS name and route. Country, region, city and coordinates, with the source.

GET /v1/ip/23.144.160.67 Example · a Mullvad VPN server
// Loading…

Use cases

One API for every IP decision.

The same fields serve sign-up, age checks, checkout, streaming and games. You write the rule for your risk.

Sign-up abuse

Stop bulk fake accounts from VPNs, proxies and data centres.

if (ip.is_anonymous || ip.is_hosting) challengeSignup()

Age assurance

Ask for an age check when a user hides behind a VPN. Private relay keeps the user's region, so iPhone users pass.

if (ip.is_vpn || ip.is_proxy || ip.is_tor) requireAgeCheck()

Fraud and payments

Add IP signals to checkout rules and cut card testing.

if (ip.risk.level === "high") require3DS()

Streaming

Show only the licensed catalogue when a viewer appears from a VPN server.

if (ip.is_vpn || ip.is_proxy) limitCatalogue()

Gaming

Stop banned players who come back through a VPN or Tor.

if ((ip.is_vpn || ip.is_tor) && wasBanned(user)) denyJoin()

E-commerce

Stop one person from claiming a promo code a hundred times.

if (ip.risk.level !== "low") limitPromo()

Designed for developers

One endpoint. Five minutes to ship.

Send a GET request with your key. Get JSON back. That is the whole integration.

  1. Get a keySign up and copy your key. No call, no contract.
  2. Call the APIFrom your back end, at sign-up, login or checkout.
  3. Write your ruleBlock, challenge or flag. You decide.
GET/v1/ip/{ip}
POST/v1/ip/batch up to 1,000 IPs, paid plans
FieldTypeMeaning
is_vpn, is_proxy, is_tor, is_relay, is_hosting, is_abuserboolean | nullOne flag per signal. null: not checked yet.
is_anonymousbooleanTrue if VPN, proxy, Tor or relay is true.
risk.score0–100Score from a published rule.
risk.levelstringlow, medium or high.
detections[].typestringvpn, proxy, tor, relay, hosting or abuse.
detections[].providerstring | nullThe VPN, proxy or network brand.
detections[].provider_locationobject | nullThe location that the VPN provider claims.
detections[].confidencestringhigh, medium or low, from a written rule.
detections[].evidence[]object[]Kind of evidence and the listed range.
detections[].first_seen, last_seendateFirst and last day we saw it.
network.asn, as_name, routeinteger, stringNetwork owner.
location.*string, numberCountry, region, city, lat, lon, source.
upgrade_forstring[]Free plan only: the paid fields that it leaves out.
14 daystrial with every field, no card
5,000free lookups a month after the trial
1,000IPs in one batch call on paid plans
99.9%uptime target, with a public status page

Playground

Try any IP address.

Same response as the API. You get 10 full lookups a day. After that you see the free-plan fields.

// The response shows here.

Pricing

Start with every field for 14 days. No card.

After the trial you keep a free plan. Upgrade from the dashboard when you need more. Cancel at any time.

Start here

Starter

For a growing app.

$49/mo

Billed monthly

100,000 lookups / month

Join the waiting list
  • Every field: provider name, evidence, confidence, dates
  • City and coordinates
  • Batch endpoint, 1,000 IPs per call
  • Overage $0.60 / 1,000

Growth

For sign-up and checkout at scale.

$149/mo

Billed monthly

500,000 lookups / month

Join the waiting list
  • Everything in Starter
  • Overage $0.40 / 1,000

Business

For high-traffic platforms.

$499/mo

Billed monthly

2,000,000 lookups / month

Join the waiting list
  • Everything in Growth
  • Overage $0.30 / 1,000

Enterprise

For platforms and data partners.

Custom

Annual contract

Custom volume

Contact us
  • Everything in Business
  • Data licence
  • SLA
  • Accuracy details under NDA

Free 14-day trial with every field. Then 5,000 lookups / month with the flags, the risk score, the network and the country. No card.

Join the waiting list

Prices in USD. Every paid plan has a 99.9% uptime target and a public status page. Every plan scales with overage, with no sales call.

Free tools

Free checks for you and your users.

FAQ

Questions from developers.

How is this different from an IP geolocation API?

Geolocation tells you where an address is. Litedar tells you what kind of address it is: a home connection, or a VPN, proxy, Tor exit or data centre. Location fields are included.

Can I block VPN users, or only flag them?

Both. Litedar gives flags, a score and a level. You write the rule: block, ask for a second factor or send the request to manual review.

What does the free plan include?

Each new account gets 14 days with every field. After that, the free plan gives 5,000 lookups a month with the flags, the risk score, the network and the country. The response lists the paid fields in upgrade_for.

Why is a flag sometimes null?

null means that we do not check that signal yet, for example residential proxies. false means that we checked and found nothing. We never show "clean" when we do not know.

Do you support IPv6?

Yes. Every field works for IPv4 and IPv6 addresses.

When can I get a key?

The API is in development. Join the waiting list and we will send you a key when it opens.

Ship IP checks this month.

Join the waiting list. We send you a key and a 14-day trial when the API opens.

  • Self-serve keysNo sales call. Copy your key and start.
  • Pay as you growPlans from $49 a month, with overage. Cancel at any time.