List Conversions
This http method allows you to list your conversions with pagination, filtering, and field selection.
List conversions
Lists your project's conversions, newest first, in pages of up to 50, over the current month and the twelve before it. Secret keys only: a public key gets 403.
get
https://api.ip2geo.dev/conversions/listcurl --request GET \
--url 'https://api.ip2geo.dev/conversions/list' \
--header 'x-api-key: i2g_sk_your_secret_key'const response = await fetch('https://api.ip2geo.dev/conversions/list', {
method: 'GET',
headers: {
'x-api-key': 'i2g_sk_your_secret_key'
}
})
const { success, message, data } = await response.json()Authorizations
x-api-keystringrequiredin: headerA secret key (
i2g_sk_...). Keep it on your server: it reads every conversion your project made. A public key gets 403 here.Query parameters
offsetintegerdefault: 0minimum: 0How many conversions to skip, a whole number.
limitintegerdefault: 50minimum: 1maximum: 50How many conversions to return, a whole number. Values above 50 are treated as 50.
selectstring[]Return only these fields, comma-separated:
select=data.continent.country.code,status. Repeating the parameter (select=data.asn.name&select=status) works too. Name a stored field as it is (id, uniqueId, data, status, startedAt, completedAt, createdAt) and a geolocation field by its path under data, such as data.continent.country.name (the data. prefix may be left out). uniqueId is always included, so every row can be matched to its conversion. The SELECT constants list every path.ipSearchstringOnly conversions whose address contains this text, case-insensitive.
Responses
200A page of conversions, trimmed to select when it is given.
successbooleanrequiredWhether the request was successful.
messagestringrequiredResponse message.
codeintegerrequiredHTTP status code.
dataobjectrequiredShow child attributes
conversionsobject[]requiredThis page of conversions, newest first.
Show child attributes
idintegerSequential conversion number.
uniqueIdstringformat: uuidThe conversion's id, a UUIDv7 that carries the time it was made. Always included.
dataobjectThe geolocation data of one address. Every value is null when the datasets do not know it.
Show child attributes
ipstring | nullThe address that was converted.
typestring | nullThe address family.
Available options:
ipv4ipv6nullis_euboolean | nulltrue when the country is in the European Union (its 27 member states, and the Åland Islands and outermost regions such as Réunion that have a country code of their own), false for any other country, null when the country is unknown.continentobjectShow child attributes
namestring | nullcodestring | nullTwo-letter continent code, lowercase:
af, an, as, eu, na, oc or sa.geoname_idinteger | nullGeoNames ID for the continent.
countryobjectShow child attributes
namestring | nullcodestring | nullISO 3166-1 alpha-2 country code, lowercase.
geoname_idinteger | nullGeoNames ID for the country.
phone_codestring | nullThe country's international calling code, such as
+1, +44 or +7.capitalstring | nulltldstring | nullThe country-code top-level domain.
subdivisionobjectState, province, or region information.
Show child attributes
namestring | nullName of the state/province/region.
codestring | nullISO 3166-2 code for the subdivision, as the datasets write it (e.g., 'CA' for California).
cityobjectShow child attributes
namestring | nullgeoname_idinteger | nullGeoNames ID for the city.
latitudenumber | nulllongitudenumber | nullaccuracy_radiusinteger | nullRadius in kilometers around the coordinates where the IP is likely located.
metro_codeinteger | nullMetro area code (US only).
postal_codestring | nullPostal code, lowercase.
timezoneobjectShow child attributes
namestring | nullIANA time zone.
time_nowstring | nullThe local time in that time zone when the address was converted, written like
10/10/2026, 1:38:38 AM.flagobjectShow child attributes
imgstring | nullA 320 px wide PNG of the flag.
emojistring | nullemoji_unicodestring | nullcurrencyobjectShow child attributes
namestring | nullcodestring | nullISO 4217 currency code.
symbolstring | nullregistered_countryobjectThe country where the IP address is registered (may differ from location country for VPNs, proxies, etc.).
Show child attributes
namestring | nullName of the registered country.
codestring | nullISO 3166-1 alpha-2 code of the registered country, lowercase.
geoname_idinteger | nullGeoNames ID for the registered country.
asnobjectShow child attributes
numberinteger | nullThe autonomous system number.
namestring | nullThe organization that announces the address.
completion_timeobjectShow child attributes
milisecondsnumber | nullHow long the conversion took, in milliseconds.
secondsnumber | nullHow long the conversion took, in seconds.
statusstringsuccess, failed (a valid address without a geolocation record, or a lookup that failed) or invalid-ip-address.Available options:
successfailedinvalid-ip-addressstartedAtstringformat: date-timeWhen the conversion started.
completedAtstring | nullformat: date-timeWhen the conversion completed.
createdAtstringformat: date-timeWhen the conversion was created.
hasMorebooleanrequiredWhether there are more conversions after this page.
totalCountintegerrequiredHow many conversions match, across every page.
_reqobjectrequiredShow child attributes
reqIdstringrequiredUnique request identifier. Quote it when you contact support.
resTimenumberrequiredResponse time in milliseconds.
{
"success": true,
"message": "Conversions listed successfully.",
"code": 200,
"data": {
"conversions": [
{
"id": 4825913,
"uniqueId": "01a12452-07a0-7a3b-8c41-d2e5f6a7b8c9",
"data": {
"ip": "8.8.4.4",
"type": "ipv4",
"is_eu": false,
"continent": {
"name": "North America",
"code": "na",
"geoname_id": 6255149,
"country": {
"name": "United States",
"code": "us",
"geoname_id": 6252001,
"phone_code": "+1",
"capital": "Washington D.C.",
"tld": ".us",
"subdivision": {
"name": "Massachusetts",
"code": "MA"
},
"city": {
"name": "Westfield",
"geoname_id": 4955190,
"latitude": 42.1293,
"longitude": -72.7522,
"accuracy_radius": 10,
"metro_code": 543,
"postal_code": "01085",
"timezone": {
"name": "America/New_York",
"time_now": "10/10/2026, 1:38:38 AM"
}
},
"flag": {
"img": "https://flagcdn.com/w320/us.png",
"emoji": "🇺🇸",
"emoji_unicode": "U+1F1FA U+1F1F8"
},
"currency": {
"name": "United States Dollar",
"code": "USD",
"symbol": "$"
}
}
},
"registered_country": {
"name": "United States",
"code": "us",
"geoname_id": 6252001
},
"asn": {
"number": 15169,
"name": "Google Llc"
},
"completion_time": {
"miliseconds": 3,
"seconds": 0.003
}
},
"status": "success",
"startedAt": "2026-10-10T05:38:38.112Z",
"completedAt": "2026-10-10T05:38:38.112Z",
"createdAt": "2026-10-10T05:38:38.112Z"
}
],
"hasMore": true,
"totalCount": 1284
},
"_req": {
"reqId": "01a12452-07a8-7b41-a95f-3a2c1d0e9f8a",
"resTime": 2
}
}400offset is not a whole number of 0 or more, or limit is not a whole number of 1 or more.
successbooleanrequiredAlways false for an error.
messagestringrequiredWhat went wrong, in a sentence you can show.
codeintegerrequiredHTTP status code.
dataobject | nullrequiredNull for most errors. A 429 carries
currentUsage, planLimit and plan, and a 400 for invalid conversion ids carries invalidIds._reqobjectrequiredShow child attributes
reqIdstringrequiredUnique request identifier. Quote it when you contact support.
resTimenumberrequiredResponse time in milliseconds.
{
"success": false,
"message": "<string>",
"code": 123,
"data": null,
"_req": {
"reqId": "01a12452-07a8-7b41-a95f-3a2c1d0e9f8a",
"resTime": 2
}
}401The x-api-key header is missing, malformed, unknown or disabled, or a public key was sent with an Origin that does not match its domain.
successbooleanrequiredAlways false for an error.
messagestringrequiredWhat went wrong, in a sentence you can show.
codeintegerrequiredHTTP status code.
dataobject | nullrequiredNull for most errors. A 429 carries
currentUsage, planLimit and plan, and a 400 for invalid conversion ids carries invalidIds._reqobjectrequiredShow child attributes
reqIdstringrequiredUnique request identifier. Quote it when you contact support.
resTimenumberrequiredResponse time in milliseconds.
{
"success": false,
"message": "<string>",
"code": 123,
"data": null,
"_req": {
"reqId": "01a12452-07a8-7b41-a95f-3a2c1d0e9f8a",
"resTime": 2
}
}403A public key was sent. Reading conversions takes a secret key: public keys can only convert addresses.
successbooleanrequiredAlways false for an error.
messagestringrequiredWhat went wrong, in a sentence you can show.
codeintegerrequiredHTTP status code.
dataobject | nullrequiredNull for most errors. A 429 carries
currentUsage, planLimit and plan, and a 400 for invalid conversion ids carries invalidIds._reqobjectrequiredShow child attributes
reqIdstringrequiredUnique request identifier. Quote it when you contact support.
resTimenumberrequiredResponse time in milliseconds.
{
"success": false,
"message": "<string>",
"code": 123,
"data": null,
"_req": {
"reqId": "01a12452-07a8-7b41-a95f-3a2c1d0e9f8a",
"resTime": 2
}
}429The project has used its plan's conversions for this period. data carries currentUsage, planLimit and plan.
successbooleanrequiredAlways false for an error.
messagestringrequiredWhat went wrong, in a sentence you can show.
codeintegerrequiredHTTP status code.
dataobject | nullrequiredNull for most errors. A 429 carries
currentUsage, planLimit and plan, and a 400 for invalid conversion ids carries invalidIds._reqobjectrequiredShow child attributes
reqIdstringrequiredUnique request identifier. Quote it when you contact support.
resTimenumberrequiredResponse time in milliseconds.
{
"success": false,
"message": "<string>",
"code": 123,
"data": null,
"_req": {
"reqId": "01a12452-07a8-7b41-a95f-3a2c1d0e9f8a",
"resTime": 2
}
}500Something failed on our side. Reads are safe to retry; a conversion may already have been counted.
successbooleanrequiredAlways false for an error.
messagestringrequiredWhat went wrong, in a sentence you can show.
codeintegerrequiredHTTP status code.
dataobject | nullrequiredNull for most errors. A 429 carries
currentUsage, planLimit and plan, and a 400 for invalid conversion ids carries invalidIds._reqobjectrequiredShow child attributes
reqIdstringrequiredUnique request identifier. Quote it when you contact support.
resTimenumberrequiredResponse time in milliseconds.
{
"success": false,
"message": "<string>",
"code": 123,
"data": null,
"_req": {
"reqId": "01a12452-07a8-7b41-a95f-3a2c1d0e9f8a",
"resTime": 2
}
}503The API is under maintenance. Retry later: https://api.ip2geo.dev/maintenance/status says when it is over.
successbooleanrequiredAlways false for an error.
messagestringrequiredWhat went wrong, in a sentence you can show.
codeintegerrequiredHTTP status code.
dataobject | nullrequiredNull for most errors. A 429 carries
currentUsage, planLimit and plan, and a 400 for invalid conversion ids carries invalidIds._reqobjectrequiredShow child attributes
reqIdstringrequiredUnique request identifier. Quote it when you contact support.
resTimenumberrequiredResponse time in milliseconds.
{
"success": false,
"message": "<string>",
"code": 123,
"data": null,
"_req": {
"reqId": "01a12452-07a8-7b41-a95f-3a2c1d0e9f8a",
"resTime": 2
}
}