A batch IP lookup API accepts many IPv4/IPv6 addresses in one POST and returns geo plus security flags per row. On ipXapi that is POST https://ipxapi.com/api/batch-ip with Authorization: Bearer and a JSON array body. Docs cap is 1024 addresses. The official curl example posts 66.165.2.7 and 190.191.2.241.
Basic is $29.99/mo with a 7-day trial or 50 requests. A batch costs as many credits as IPs plus one — the two-IP docs example is 3 credits, not 2. This is not the single-IP GET /api/ip path. Docs: ipxapi.com (Batch IP Lookup).
Request: official two-IP body
curl -X POST "https://ipxapi.com/api/batch-ip" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '["66.165.2.7","190.191.2.241"]'
Response: official example first row
The docs example response includes a MailChimp row. First object:
{
"results": [
{
"status": "success",
"country": "United States",
"countryCode": "US",
"region": "US-CA",
"regionName": "California",
"city": "Mountain View",
"zip": "94043",
"lat": 37.40599,
"lon": -122.0786,
"timezone": "America/Los_Angeles",
"isp": "MailChimp",
"org": "MailChimp",
"as": "AS14782 MailChimp",
"query": "148.105.12.120",
"security": {
"is_proxy": false,
"is_vpn": false,
"is_cloud_provider": true
}
}
]
}
The curl body and the example query are different IPs in the docs. Copy the curl with your key for a matching pair. Single-IP GET /api/ip?ip=148.105.12.120 in the geo quick-start shows is_cloud_provider: false — do not mix the two fixtures.
Go live
1. Register — 7-day trial or 50 requests.
2. Copy the Bearer key.
3. POST a JSON array to /api/batch-ip.
4. Budget credits as n + 1.
Look up a list of IPs with an ipXapi key →