{"rid":"data-apis/country-is","card":{"rid":"data-apis/country-is","eid":"country","topic":"data-apis","slug":"country-is","provider":"Country (api.country.is)","url":"https://country.is/","domain":"country.is","category":"IP geolocation API","tier":"Free hosted API","verdict":"qualifies","vorder":0,"grp":"usable","self_hosted":0,"confidence":"documented","binding":"request-rate","identity_kind":"anonymous","identity_basis":"stated","needs_card":0,"needs_phone":0,"needs_id":0,"needs_institution":0,"country":null,"crypto":null,"interfaces":"rest","egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-31T06:24:05.368Z","verified_basis":"live","checked_on":"2026-10-31","stale_on":"2026-12-01","n_evidence":9,"usd_month":null,"usd_per_tb_month":null,"summary":"api.country.is is free with no key and no quotas; country by default, with city, continent, subdivision, postal, location and ASN on request; MaxMind GeoLite...","duplicate_of":null,"n_unknown":1,"free_unit":"unlimited"},"record":{"topic":"data-apis","slug":"country-is","provider":"Country (api.country.is)","url":"https://country.is/","category":"IP geolocation API","tier":"Free hosted API","self_hosted":false,"free_tier":{"stated":"api.country.is is free with no key and no quotas; country by default, with city, continent, subdivision, postal, location and ASN on request; MaxMind GeoLite2 data refreshed every 24 hours","unit":"unlimited","metered_on":"none","source_url":"https://country.is/","read_on":"2026-10-30"},"per_object_cap":{"stated":"up to 100 addresses in one POST","bytes":null,"source_url":"https://country.is/"},"retention":{"stated":"not stated","days":null},"egress":{"terms":"not applicable","metered":false,"free_allowance":null,"price_per_tb":null,"source_url":"https://country.is/"},"interface":["rest"],"interface_detail":"GET https://api.country.is/{ip}, POST a JSON array of up to 100 addresses, ?fields= for the extra fields; HTTP 429 when the rate limit is exceeded","endpoint":"https://api.country.is/","tooling":"any HTTP client","chaining":"keyless lookups with no quota at up to 10 a second from one address, or 100 addresses a POST. Bulk path: the 100-address POST; the open-source server can also be run on a rented or free machine with MaxMind credentials, last after every hosted route","limits":[{"kind":"request-rate","value":"10 requests a second per IP","source":"https://country.is/"},{"kind":"per-object-cap","value":"up to 100 addresses per POST","source":"https://country.is/"}],"binding":"request-rate","identity_cost":{"kind":"anonymous","detail":"no key and no account","country":null},"reliability_note":"infrastructure rate limit of 10 requests a second per IP answers HTTP 429; running since 2015","confidence":"documented","confidence_note":"the home page was quoted on 2026-10-30 and a keyless lookup at api.country.is answered HTTP 200 on 2026-10-31.","evidence":[{"url":"https://country.is/","date":"2026-10-30","proved":"the hosted API is free with no key and the app is open source","capture":"sha256:848fe7e24d15239e281d986b6fd1e1e98a9da97477ffb132e943e27bc20f2c7e","quote":"is free and requires no key. The app is open source and can be"},{"url":"https://country.is/","date":"2026-10-30","proved":"no quotas, 10 requests a second per IP","capture":"sha256:848fe7e24d15239e281d986b6fd1e1e98a9da97477ffb132e943e27bc20f2c7e","quote":"No quotas. Infrastructure rate-limits to 10 requests per second per IP to prevent abuse."},{"url":"https://country.is/","date":"2026-10-30","proved":"a POST takes up to 100 addresses","capture":"sha256:848fe7e24d15239e281d986b6fd1e1e98a9da97477ffb132e943e27bc20f2c7e","quote":"Look up multiple IPs in one request. Send a JSON array of up to 100 addresses."},{"url":"https://country.is/","date":"2026-10-30","proved":"extra fields are available","capture":"sha256:848fe7e24d15239e281d986b6fd1e1e98a9da97477ffb132e943e27bc20f2c7e","quote":"Add extra fields to any lookup: `city`, `continent`, `subdivision`, `postal`, `location`, `asn`."},{"url":"https://country.is/","date":"2026-10-30","proved":"the data is MaxMind GeoLite2, updated daily","capture":"sha256:848fe7e24d15239e281d986b6fd1e1e98a9da97477ffb132e943e27bc20f2c7e","quote":"GeoLite2, updated daily."},{"url":"https://country.is/","date":"2026-10-30","proved":"data refreshes every 24 hours","capture":"sha256:848fe7e24d15239e281d986b6fd1e1e98a9da97477ffb132e943e27bc20f2c7e","quote":"Returns metadata, including when the data was last updated. Data refreshes every 24 hours."},{"url":"https://country.is/","date":"2026-10-30","proved":"running since 2015","capture":"sha256:848fe7e24d15239e281d986b6fd1e1e98a9da97477ffb132e943e27bc20f2c7e","quote":"Country has been running since 2015."},{"url":"https://country.is/","date":"2026-10-30","proved":"the server can be run on a user's own machine","capture":"sha256:848fe7e24d15239e281d986b6fd1e1e98a9da97477ffb132e943e27bc20f2c7e","quote":"Run your own instance with Docker."},{"url":"https://api.country.is/8.8.8.8","date":"2026-10-31","proved":"a keyless lookup answered","capture":"sha256:d07eac53c3d1be503608d5ebf844ecce010d917245e4696e68abc99fc5e16f73","quote":"{\"ip\":\"8.8.8.8\",\"country\":\"US\"}"}],"verdict":"qualifies","verified_at":"2026-10-31T06:24:05.368Z","notes":"Free requests: no quota, no key. Rate limit: 10 a second per IP. Bulk path: POST of up to 100 addresses; the self-hosted Docker server is the last-resort route.","extras":{"bulk_path":"POST up to 100 addresses","free_requests":"no quota"}},"claims":[{"path":"$.free_tier","kind":"has-free-tier","num":1,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"},{"path":"$.free_tier.stated","kind":"free-quota","num":24,"unit":"hours","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"},{"path":"$.limits[0].value","kind":"limit:request-rate","num":10,"unit":"requests","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"},{"path":"$.limits[1].value","kind":"limit:per-object-cap","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"}],"unknown":[["$.egress.terms","not-applicable"]],"history":[],"drift":[]}