Frequently Asked Questions
Everything about IP geolocation, VPN detection, ASN lookups, rate limits, and how the API works.
Getting started
What is ipto?
A free IP intelligence API. Look up any IPv4 or IPv6 address and get country, ASN, ISP, hosting detection, VPN detection, Tor exit node identification, and abusive network scoring. One JSON response. No signup.
Do I need an API key?
No. The free tier needs no key and no signup — just call the endpoint (limits are tracked per IP address). If you want Pro or Enterprise limits, send your key in the
X-API-Key header or as ?api_key=. You can issue a free key instantly with POST /v1/keys.What is the base URL?
https://ipto.to. All endpoints are under /v1/. CORS is enabled on all endpoints.How do I look up my own IP?
GET https://ipto.to/v1/ip — no parameter needed. Returns your IP along with city, state, timezone, and lat/lon. Or run curl ipto.to in a terminal.Can I use this from the terminal?
Yes.
curl ipto.to auto-detects the curl User-Agent and returns compact JSON for your own IP, fields including country, city, ASN, and live weather. curl ipto.to/8.8.8.8 does the same for any IP (no weather). Wget and HTTPie also work.IP geolocation
Why does the location show the wrong city?
IP geolocation maps IP ranges to the physical location of the network infrastructure, not the end user. ISPs route traffic through regional exchange points that can be hundreds of miles away. Country accuracy is high. City-level precision degrades for residential and mobile IPs.
Why is the country wrong when I use a VPN?
When connected to a VPN, your traffic exits from the VPN server's IP address. ipto reports the location of that exit server, not your physical location. The
is_vpn flag will be true in this case.What does geolocation accuracy depend on?
Data quality depends on how accurately ISPs and organisations register their IP blocks in WHOIS and route registries. Large cloud providers and ISPs have highly accurate records. Smaller or older allocations can be imprecise.
Do you support IPv6?
Yes. IPv6 addresses return ASN, organisation, and IP-range data, plus city-level location (city, region, postal code, latitude/longitude) from the MaxMind dataset where the range is covered, and bogon/private ranges are identified. The one gap: the VPN, Tor, and abuse flags are IPv4-only for now, because those feeds are published as IPv4 ranges — on an IPv6 address they come back false rather than guessed.
What is a bogon IP?
A bogon (bogus) IP is any address that should not appear as a source on the public internet: loopback (127.x.x.x), RFC 1918 private ranges (10.x, 172.16–31.x, 192.168.x), link-local (169.254.x), multicast (224–239.x), and IANA reserved blocks. ipto detects these before any database lookup and returns
bogon: true with a bogon_type reason. Check any address on the bogon IP checker.Threat intelligence
How do you detect VPNs?
ipto maintains a database of known VPN server IP ranges, built from BGP routing analysis and active enumeration. Each IP is checked against this database on lookup. Provider attribution is derived from ASN ownership: when an ASN is registered exclusively to a VPN operator, the provider is identified. Test any IP on the VPN & proxy checker.
How do you detect Tor exit nodes?
The Tor exit node list is sourced from the official Tor Project bulk exit node list at check.torproject.org. This is the authoritative list of IPs currently able to originate Tor exit traffic. It is refreshed every 6 hours.
What does is_abuser mean?
The IP falls within a network range that has been flagged by multiple independent threat intelligence feeds as hosting abusive infrastructure: spam sources, malware command-and-control servers, botnet relays, or mass-exploitation tooling. A higher abuse score means more feeds agreed independently.
What is the difference between is_datacenter and is_residential?
is_datacenter means the IP belongs to a hosting provider, cloud platform, or CDN. is_residential means the IP is classified as a consumer broadband connection. Most IPs are neither — they belong to ISP infrastructure that is neither hosting nor residential.What is is_proxy?
Flags known proxy exit points not categorised as VPN or Tor. Currently limited to data from the threat feed pipeline. Coverage is lower than VPN and Tor detection.
ASN and network
What is an ASN?
An Autonomous System Number (ASN) is a unique identifier for a network that independently manages its own IP routing policies on the internet. Examples: Google is AS15169, Amazon is AS16509. Every IP block is announced by exactly one ASN. Look any ASN up directly on the ASN lookup tool.
What does asn_type mean?
The category of the organisation that operates the ASN. Values:
hosting (cloud or server hosting), isp (internet service provider), business (enterprise network), education (university or research), government, mobile (carrier), residential.What does is_mobile mean?
The IP block is registered to a mobile carrier. Mobile IPs are commonly reassigned between users and often appear in different geographic locations than the carrier's headquarters.
Can I see the full list of IP ranges under an ASN, not just a count?
Yes —
GET /v1/asn/:asn/ranges?limit=&offset= returns the actual ranges (each with country code and hosting/mobile/residential/bot/blacklist flags), paginated up to 200 per request. The main GET /v1/asn/:asn lookup also includes ip_range_count and a rank — the ASN's size rank within its country by range count — without needing the ranges endpoint. See the ASN lookup tool.How do I look up WHOIS registration details or peering relationships for an ASN?
GET /v1/asn/:asn/whois returns the RIR registration record (name, status, country, registration/last-changed dates, contacts) via RDAP. GET /v1/asn/:asn/relationships returns known peers, upstream providers, and downstream customers from CAIDA's AS-relationships dataset; GET /v1/asn/:asn/related instead finds other ASNs likely run by the same organisation. All three appear together on the ASN lookup page.Is there a directory of all public IPv4 address space, not just one ASN at a time?
Yes — All IP Ranges (
GET /v1/ip-ranges) is a browsable directory of all 256 possible /8 blocks, drilling down through /16 to the actual assigned ranges and the ASN each one belongs to.API usage
What is the rate limit?
The free tier allows 1,000 requests/day per IP address, no signup or key required. Pro keys get 100,000/day; Enterprise is unlimited. Exceeding your limit returns HTTP 429. See pricing for details.
How do I do a bulk lookup?
POST a JSON array of IP strings to
/v1/ip/bulk — up to 100 per request, Pro/Enterprise only (see pricing). The response is an object keyed by IP. Parallel cache reads make this faster than sequential calls. Each IP counts against your daily budget, same as an individual lookup.How do I filter the response fields?
Add
?fields=field1,field2 to any single-IP request. Example: /v1/ip/1.1.1.1?fields=ip,country_code,is_vpn,is_tor. The ip field is always included.What output formats are available?
JSON (default), CSV, plain text, XML, and YAML. Add
?format=csv, ?format=text, ?format=xml, or ?format=yaml to any single-IP request. CSV and text return flat key/value pairs; XML and YAML preserve nested objects like flags.Is there an SDK?
No official SDK yet. The API is a standard HTTP JSON endpoint — any HTTP client works. See the docs for curl, JavaScript, Python, PHP, and Go examples.
Can an AI agent (Claude, Cursor, etc.) use ipto directly?
Yes —
https://ipto.to/mcp is a Model Context Protocol (MCP) server that exposes the same lookups as callable tools over JSON-RPC — IP (single and bulk), ASN with its ranges/whois/relationships, IP whois, RPKI, company, carrier, hosted domains, unified search, nearby places, country, reverse DNS, user-agent, phone, email, fraud score, language, currency, weather, trademark, and patent — so an MCP-capable client can call them directly instead of making raw HTTP requests. It uses the same X-API-Key and rate-limit rules as the REST API.Data
How often is the data updated?
The ASN/IP-range dataset is refreshed daily at 04:00 UTC. City-level geolocation merges two independent sources on their own schedules — IP2Location monthly, MaxMind weekly — so precision can improve between ASN refreshes. Threat feeds (VPN, Tor, abuse) sync every 6 hours. The edge cache TTL is 5 minutes.
What data sources do you use?
We gather info from several key industry data providers, updated daily. VPN detection uses BGP-derived range intelligence. Tor node data comes from the official Tor Project registry and verified relay lists. Abuse networks use cross-corroborated multi-source blacklist intelligence.
How accurate is the threat intelligence?
VPN and Tor detection has high recall for major providers and all confirmed exit nodes. Smaller or newer VPN services that lease IP space from generic hosting ASNs may not be identified by provider name. Abuse scoring uses cross-feed corroboration — a network requires 3+ independent sources to appear at Medium tier, and 8+ sources for Critical.
New capabilities
What do abuse_score and threat_type mean?
abuse_score is a 1–10 severity score based on cross-feed corroboration: how many independent threat sources flag the same network. threat_type names which category triggered the flag — tor_exit, vpn, or abuser. risk_tier groups the score into critical (8–10), high (5–7), or medium (3–4). Try a live check on the IP abuse checker.Does ipto return currency exchange rates?
Yes. Any response with a resolved country includes
currency_code and exchange_rate_usd — a daily reference rate covering 154 world currencies. Currencies outside that list return null for the rate.What locale data is included in a response?
Each response with country data includes
languages (official languages spoken), tld (country-code top-level domains), capital, and borders (ISO codes of neighboring countries) — useful for localizing content or building country-aware forms without a second API call.How do I do a reverse DNS / hostname lookup?
GET /v1/ip/:ip/hostname performs a live PTR lookup over DNS-over-HTTPS and returns { ip, hostname }. It's a single on-demand lookup, not a cached domain-enumeration database — hostname is null if no PTR record exists. There's also a browser tool at /reverse-dns-lookup.Can I download the raw datasets?
Yes.
GET /v1/datasets/:kind returns CSV exports for asn, ranges, and geo-city — the same datasets the API queries internally, refreshed on the same schedule. geo-city takes an optional ?source=primary (default) or ?source=secondary, since city-level data is merged from two independent sources with different coverage.What do I get from a Pro or Enterprise API key?
A Pro key unlocks a 100,000 requests/day limit and bulk lookup (
POST /v1/ip/bulk, up to 100 IPs per request) — bulk isn't available on Free at all. Enterprise (unlimited requests) adds a custom SLA and dedicated support. City/postal/lat-lon precision is included at every tier, including Free. POST /v1/keys issues a Free-tier key (1,000 requests/day, usage tracking via GET /v1/keys/usage?key=X) — see pricing to upgrade.Does city-level geolocation work for any IP, or just my own?
Both, when
geo_precision allows it. Your own IP (GET /v1/ip) always gets city-level data from the edge network you're connecting through. Explicit IP lookups (GET /v1/ip/:ip) get city-level data when that IP falls inside the city-level dataset's coverage; otherwise geo_precision drops to country and city/state/lat/lon return null.How do I get the response in a different language?
Add
?lang= to any request with one of: pt, fr, de, zh-TW, ko, zh-CN, ja-JP, es-ES, ar-SA, hi-IN (en is the default). This localizes country_name and continent into the target language. Field names and threat data stay in English regardless of locale.Beyond IP: identity, fraud, and reference data
Does ipto validate email addresses?
Yes —
GET /v1/email/:email checks syntax, a live MX record lookup, and disposable/temporary-domain detection against a synced blocklist. Free, no signup. Try the Email Checker.Does ipto validate phone numbers?
Yes —
GET /v1/phone/:number parses any E.164 or national-format number for validity, country, region, and line type (mobile, landline, or VoIP) against a synced MCC/MNC carrier dataset. Try the Phone Number Checker.What is the Fraud Score Checker?
GET /v1/fraud-score combines IP threat signals, email deliverability, phone validity, and User-Agent bot detection into one fused 0–100 risk score — the one thing none of the major standalone IP-intelligence APIs offer. All four inputs are optional; a signal you don't pass is simply absent, not scored as clean. Try the Fraud Score Checker.Does ipto detect the language of a piece of text?
Yes —
GET /v1/language identifies the language of any text across 76 languages via local trigram-frequency analysis. No text is sent to a third-party vendor or AI model, and nothing is logged. Try the Language Detector.Is there a standalone currency conversion endpoint?
Yes —
GET /v1/currency/convert and GET /v1/currency/rates expose the same daily exchange-rate feed that already powers exchange_rate_usd on every IP/country lookup, covering 154 currencies, plus GET /v1/currency/history for 90-day historical rates. Try the Currency Converter.Does ipto provide weather data?
Yes —
GET /v1/weather returns current conditions for any place name, postal code, or coordinate pair; add &detail=1 for an hourly outlook and 3-day forecast. The homepage's own-IP weather widget and the Weather Lookup tool both use it.Does ipto look up trademarks?
Yes —
GET /v1/trademark/:serial proxies USPTO's TSDR API for live case status by 8-digit serial number. Case-status text is a U.S. government work and public domain, so every response carries a source/attribution field; trademark logo/image data is deliberately out of scope. Registration-number lookup isn't supported — only the serial-number path is documented by USPTO today. Try the Trademark Lookup tool.Does ipto look up patents?
Yes —
GET /v1/patent/:number proxies USPTO's live Patent File Wrapper API for grant status by 7-8 digit utility patent number. Coverage starts at applications filed in 2001, and the data is prosecution/bibliographic (filing date, status, inventors, attorney of record) — not a citation graph, patent family, or legal-status field the way Lens.org, Espacenet, or Google Patents show. Design, plant, and reissue patents aren't supported yet. Try the Patent Lookup tool.Ownership, routing & places
What does the search bar actually call?
A single request —
GET /v1/search/:query. It detects whether you typed an IP, ASN, country code, email, or phone number, then fans out server-side to every relevant check (IP lookup, RPKI, company, whois, carrier, hosted domains, places) in parallel. One search only draws one request against your daily rate-limit budget, not one per feature.Does ipto validate RPKI / route-origin authorization?
Yes —
GET /v1/ip/:ip/rpki (and the explicit GET /v1/rpki?asn=&prefix= form) resolves route-origin validation live via RIPEstat, which aggregates ROA data from all five RIRs. Status is only ever valid, invalid, or unknown — never inferred from any other signal. Try the RPKI Validator.How does IP to Company work, and how is it different from WHOIS?
GET /v1/ip/:ip/company combines RDAP registrant data with the IP's own ASN organization name into one categorical confidence (high/medium/low/none) — a single "who owns this" verdict. GET /v1/ip/:ip/whois returns the underlying RDAP record itself instead: the network block, allocation type, registration dates, and every registrant/admin/abuse contact on file, closer to classic WHOIS output. Try IP to Company or IP Whois.Can I identify the mobile carrier behind an IP?
Best-effort, and only for IPs already classified as mobile networks.
GET /v1/ip/:ip/carrier fuzzy-matches the ASN's organization name against an MCC/MNC operator directory scoped to the IP's country. There is deliberately no single carrier: "X" field — a bare name would read as a live per-subscriber claim the data can't honestly support. Try the IP to Mobile Carrier tool.Can I find what domains are hosted on an IP?
GET /v1/ip/:ip/hosted-domains finds domains via the IP's reverse-DNS hostname plus certificate-transparency logs (crt.sh) — it is not a general reverse-IP lookup. The response's own limitations field spells out what it structurally can't see: IPs with no PTR record, unrelated domains on shared hosting, and domains that were never CT-logged. Try Hosted Domains.What is the Nearby feature?
GET /v1/places/:ip reverse-geocodes an IP's existing city-level location, then returns nearby points of interest (restaurants, parks, schools, transit), notable landmarks, local crime data where a source exists (UK and US only), and an optional on-demand driving commute estimate when you supply a destination. Try Nearby.What does connection_type mean, and how is it different from is_mobile?
connection_type on GET /v1/ip/:ip is a single best-effort label — mobile, datacenter, or unknown — derived from the same ASN classification as the flags object. It replaces device-count/NAT-based connection detection, which isn't something a Cloudflare Worker can observe (no raw TCP/IP packet access) — so rather than fake it, unclassified ASNs honestly return unknown.Premium phone intelligence (carrier & porting lookup)
Can I look up the real carrier of a phone number, not just format/region?
Yes, as a premium layer on top of the always-free local check.
GET /v1/phone/:number still runs the free local validation first (format, region, line type — unchanged, see the previous question) and, budget permitting, adds live carrier, original_carrier, is_ported, a phone_type classification, and a locality-level phone_region and country_prefix from our real-time carrier-lookup provider. A full country_name display name is included regardless of tier, and is localized via ?lang=/Accept-Language exactly like every other endpoint's country_name field — check the response's lang/lang_source to see which language was actually applied. The response's source field tells you which tier answered: "premium" or "local".How many free premium (carrier/porting) phone lookups do I get?
100 premium lookups per IP address per month on the Free tier, 1,000/month per API key on Pro, and 5,000/month on Enterprise — see pricing. This is separate from, and on top of, the existing free local phone-lookup budget (100/day on Free), which has no monthly cap of its own.
What happens when I use up my premium phone lookups for the month?
Nothing breaks.
GET /v1/phone/:number falls back seamlessly to the free local engine for the rest of the month — you still get a full 200 response with format, region, and line-type data, just without the live carrier/is_ported fields (which come back null and source: "local"). No errors, no signup required to keep using the free tier.What's the difference between phone_type and line_type in the response?
They're two independent classifications from two different engines, kept separate on purpose rather than merged.
line_type comes from the always-free local check (its own enum, e.g. MOBILE, FIXED_LINE, PREMIUM_RATE). phone_type only appears when source is "premium" and uses the carrier-lookup provider's own categories: mobile, fixed_line, voip, toll_free, premium_rate, shared_cost, personal_number, pager, uan, voicemail, or unknown. premium_rate is worth watching specifically if you're using this for fraud signals — premium-rate numbers (billed at a higher per-minute rate than a normal line) are a common vector for international revenue-share fraud (IRSF), and this endpoint surfaces that classification directly rather than only flagging VoIP.Is my phone number sent to a third party when I use the checker?
Only when a premium lookup actually runs (i.e. your monthly budget in the previous question isn't exhausted) — the free local check never leaves ipto.to's own Cloudflare Workers. When a premium lookup does run, the number is sent to our carrier-lookup provider solely to answer that one request; we don't store the provider's API key anywhere reachable from a public request, and per ipto.to's standard logging policy (see About) we don't log query history ourselves either.
Account, limits & privacy
When does my daily limit reset?
Every day at 00:00 UTC. A request over the limit returns HTTP 429 with a
Retry-After header and a retry_after_seconds field telling you exactly how long until the window resets.How do I get an API key?
How do I send my API key?
In the
X-API-Key header (preferred, since query strings can end up in logs) or as ?api_key= on the URL. Requests that carry a key are counted against that key's budget instead of your IP's. Check a key's usage with GET /v1/keys/usage?key=X.Does one request always count as one request?
Mostly. A search-bar search or an MCP tool call is one request even when it fans out to several checks server-side. Bulk calls are charged per item — each IP in
POST /v1/ip/bulk and each number in a bulk phone lookup counts individually. Nearby (places) and premium phone lookups also have their own separate budgets on top of the general one.Do you log the IPs or queries I look up?
No. ipto doesn't log the IP addresses you look up, store query history, or build profiles; only aggregate request counts are kept for capacity planning. Your homepage search history and starred lookups live only in your own browser. Details are on the privacy page.
Can I use ipto in a production app?
Yes. The API is CORS-enabled, versioned under
/v1/, and returns stable JSON. The Free tier is meant for individuals and light use (1,000 requests/day); for production traffic use a Pro key (100,000/day) or Enterprise (unlimited, with a custom SLA). See pricing and the status page for live health.