Every country, region, city, ISP and carrier you can target, with the value to put in the proxy login.
Targeting values come from these lists, never from guesses: a value outside them makes the gateway answer 407, and it never falls back to the whole country. Each item has a name as the network names it ("new york") and a slug, the form the proxy login uses (newyork).
Region and city lists exist for every country. ISP lists (residential) and carrier lists (mobile) exist for the United States, the United Kingdom and Germany so far. The lists follow our upstream network and are cached for a day, so fetch them when you build a picker rather than on every request.
List countries
GET/api/v1/locations/countries
Countries with exits on the product right now. code is what country and the -cc- key take.
import os
import requests
r = requests.get(
"https://aeonproxy.com/api/v1/locations/countries?product=residential",
headers={"Authorization": f"Bearer {os.environ['AEONPROXY_API_KEY']}"},
timeout=30,
)
data = r.json()
if not r.ok:
raise SystemExit(data["error"]["message"])
print(data)
// Node.js 18+, as an ES module (.mjs)
const res = await fetch("https://aeonproxy.com/api/v1/locations/countries?product=residential", {
headers: {
Authorization: `Bearer ${process.env.AEONPROXY_API_KEY}`,
},
});
const data = await res.json();
if (!res.ok) throw new Error(data.error.message);
console.log(data);
import os
import requests
r = requests.get(
"https://aeonproxy.com/api/v1/locations/regions?product=residential&country=us",
headers={"Authorization": f"Bearer {os.environ['AEONPROXY_API_KEY']}"},
timeout=30,
)
data = r.json()
if not r.ok:
raise SystemExit(data["error"]["message"])
print(data)
// Node.js 18+, as an ES module (.mjs)
const res = await fetch("https://aeonproxy.com/api/v1/locations/regions?product=residential&country=us", {
headers: {
Authorization: `Bearer ${process.env.AEONPROXY_API_KEY}`,
},
});
const data = await res.json();
if (!res.ok) throw new Error(data.error.message);
console.log(data);
Cities of one country, filtered by search and paged with limit and offset (the United States alone has thousands). count is the number of matches before paging. The slug goes into the -city- key.
Query parameters
Name
Type
Description
productrequired
residential | mobile
Which pool: residential or mobile.
countryrequired
string
Two-letter country code from countries, e.g. us,gb,de.
search
string
Only cities whose name contains this text (case-insensitive).
import os
import requests
r = requests.get(
"https://aeonproxy.com/api/v1/locations/cities?product=residential&country=us&search=san&limit=3",
headers={"Authorization": f"Bearer {os.environ['AEONPROXY_API_KEY']}"},
timeout=30,
)
data = r.json()
if not r.ok:
raise SystemExit(data["error"]["message"])
print(data)
// Node.js 18+, as an ES module (.mjs)
const res = await fetch("https://aeonproxy.com/api/v1/locations/cities?product=residential&country=us&search=san&limit=3", {
headers: {
Authorization: `Bearer ${process.env.AEONPROXY_API_KEY}`,
},
});
const data = await res.json();
if (!res.ok) throw new Error(data.error.message);
console.log(data);
Home ISPs (residential) or mobile carriers (mobile) of one country. Residential logins take the slug in -isp-, mobile ones in -car-. An empty list means the country has no network targeting yet.
Query parameters
Name
Type
Description
productrequired
residential | mobile
Which pool: residential or mobile.
countryrequired
string
Two-letter country code from countries, e.g. us,gb,de.
import os
import requests
r = requests.get(
"https://aeonproxy.com/api/v1/locations/isps?product=residential&country=us",
headers={"Authorization": f"Bearer {os.environ['AEONPROXY_API_KEY']}"},
timeout=30,
)
data = r.json()
if not r.ok:
raise SystemExit(data["error"]["message"])
print(data)
// Node.js 18+, as an ES module (.mjs)
const res = await fetch("https://aeonproxy.com/api/v1/locations/isps?product=residential&country=us", {
headers: {
Authorization: `Bearer ${process.env.AEONPROXY_API_KEY}`,
},
});
const data = await res.json();
if (!res.ok) throw new Error(data.error.message);
console.log(data);