Pas de KYC — aucune pièce d’identité, aucun selfie, aucun document
Langue: Français
Choisir 1 GB

Référence API

Proxies résidentiels et identifiants

Gérez les abonnements de trafic résidentiel et mobile à rotation 4G/5G par GB : identifiants des proxies, sous-utilisateurs avec leurs propres identifiants et plafonds, consommation quotidienne et lieux sélectionnables dans le nom d’utilisateur du proxy.

Dernière mise à jour: · 11 min de lecture

Points d’accès de cette page

  • GET /v1/residential/subscriptions: Lister les abonnements de trafic résidentiel et mobile à rotation par GB
  • GET /v1/residential/subscriptions/{subscriptionId}: Consulter un abonnement résidentiel
  • PATCH /v1/residential/subscriptions/{subscriptionId}: Renommer ou activer et désactiver le renouvellement
  • POST /v1/residential/subscriptions/{subscriptionId}/reset-password: Générer un nouveau mot de passe du proxy principal
  • GET /v1/residential/subscriptions/{subscriptionId}/usage: Consommation quotidienne de trafic
  • GET /v1/residential/subscriptions/{subscriptionId}/sub-users: Lister les sous-utilisateurs, leurs identifiants distincts et leurs plafonds
  • POST /v1/residential/subscriptions/{subscriptionId}/sub-users: Créer un sous-utilisateur
  • PATCH /v1/residential/subscriptions/{subscriptionId}/sub-users/{subUserId}: Modifier un sous-utilisateur : libellé, plafond, activation et mot de passe
  • DELETE /v1/residential/subscriptions/{subscriptionId}/sub-users/{subUserId}: Supprimer un sous-utilisateur
  • GET /v1/catalog/countries: Pays où un produit est disponible
  • GET /v1/catalog/countries/{countryCode}/cities: Villes sélectionnables dans un pays
  • GET /v1/catalog/countries/{countryCode}/asns: FAI sélectionnables (ASN) dans un pays, pour le résidentiel uniquement

URL de base https://africaproxies.com/api/v1. Authentification, erreurs et limites : voir la présentation de l’API.

Sessions persistantes

Ajoutez -session-{id}-ttl-{minutes} au nom d'utilisateur du proxy pour conserver la même IP : {id} est composé de 1–32 lettres ou chiffres de votre choix, ttl est de 1–30 minutes. L'IP peut changer plus tôt, par exemple lorsque l'appareil qui la supporte se déconnecte.

Lister les abonnements de trafic résidentiel et mobile à rotation par GB

GET/v1/residential/subscriptions

Authentification : clé API dans l'en-tête Authorization: Bearer API_KEY.

Paramètres

NomDansTypeRequisDescription
productIdqueryresidential · mobile-gbNonSeulement ce produit (absent : les deux).

Réponse 200 OK

{
  "data": [
    {
      "id": "res_9x2m4k",
      "productId": "residential",
      "label": "Residential #1",
      "planId": "res-10",
      "status": "active",
      "trafficTotalBytes": 10000000000,
      "trafficUsedBytes": 2350000000,
      "trafficRemainingBytes": 7650000000,
      "expiresAt": null,
      "autoRenew": false,
      "username": "u7k2m9",
      "password": "PASSWORD",
      "endpoint": {
        "host": "gw.africaproxies.com",
        "httpPort": 7777,
        "socksPort": 7778
      },
      "subUserCount": 1,
      "createdAt": "2026-10-05T14:03:11Z"
    }
  ]
}

Exemples de code

curl
curl -s "https://africaproxies.com/api/v1/residential/subscriptions" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/residential/subscriptions", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Obtenir un abonnement résidentiel

GET/v1/residential/subscriptions/{subscriptionId}

Authentification : clé API dans l'en-tête Authorization: Bearer API_KEY.

Paramètres

NomDansTypeRequisDescription
subscriptionIdpathstringOui—

Réponse 200 OK

{
  "id": "res_9x2m4k",
  "productId": "residential",
  "label": "Residential #1",
  "planId": "res-10",
  "status": "active",
  "trafficTotalBytes": 10000000000,
  "trafficUsedBytes": 2350000000,
  "trafficRemainingBytes": 7650000000,
  "expiresAt": null,
  "autoRenew": false,
  "username": "u7k2m9",
  "password": "PASSWORD",
  "endpoint": {
    "host": "gw.africaproxies.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "subUserCount": 1,
  "createdAt": "2026-10-05T14:03:11Z"
}

Exemples de code

curl
curl -s "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/residential/subscriptions/res_9x2m4k", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Renommer ou activer et désactiver le renouvellement

PATCH/v1/residential/subscriptions/{subscriptionId}

Authentification : clé API dans l'en-tête Authorization: Bearer API_KEY.

Paramètres

NomDansTypeRequisDescription
subscriptionIdpathstringOui—

Corps de la requête

ChampTypeRequisDescription
labelstringNonmax. 60 caractères
autoRenewbooleanNon—
Exemple
{
  "label": "Price monitoring",
  "autoRenew": true
}

Réponse 200 OK

{
  "id": "res_9x2m4k",
  "productId": "residential",
  "label": "Residential #1",
  "planId": "res-10",
  "status": "active",
  "trafficTotalBytes": 10000000000,
  "trafficUsedBytes": 2350000000,
  "trafficRemainingBytes": 7650000000,
  "expiresAt": null,
  "autoRenew": false,
  "username": "u7k2m9",
  "password": "PASSWORD",
  "endpoint": {
    "host": "gw.africaproxies.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "subUserCount": 1,
  "createdAt": "2026-10-05T14:03:11Z"
}

Exemples de code

curl
curl -s -X PATCH "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"label":"Price monitoring","autoRenew":true}'
Python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.patch(f"{API}/residential/subscriptions/res_9x2m4k", headers=HEADERS, json={"label": "Price monitoring", "autoRenew": True}, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k`, {
  method: 'PATCH',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ label: 'Price monitoring', autoRenew: true }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Générer un nouveau mot de passe proxy pour l'utilisateur principal

POST/v1/residential/subscriptions/{subscriptionId}/reset-password

L'ancien mot de passe cesse de fonctionner dans un délai de 60 secondes à la passerelle.

Authentification : clé API dans l'en-tête Authorization: Bearer API_KEY.

Paramètres

NomDansTypeRequisDescription
subscriptionIdpathstringOui—

Réponse 200 OK

{
  "id": "res_9x2m4k",
  "productId": "residential",
  "label": "Residential #1",
  "planId": "res-10",
  "status": "active",
  "trafficTotalBytes": 10000000000,
  "trafficUsedBytes": 2350000000,
  "trafficRemainingBytes": 7650000000,
  "expiresAt": null,
  "autoRenew": false,
  "username": "u7k2m9",
  "password": "PASSWORD",
  "endpoint": {
    "host": "gw.africaproxies.com",
    "httpPort": 7777,
    "socksPort": 7778
  },
  "subUserCount": 1,
  "createdAt": "2026-10-05T14:03:11Z"
}

Exemples de code

curl
curl -s -X POST "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k/reset-password" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.post(f"{API}/residential/subscriptions/res_9x2m4k/reset-password", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k/reset-password`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Utilisation quotidienne du trafic

GET/v1/residential/subscriptions/{subscriptionId}/usage

Authentification : clé API dans l'en-tête Authorization: Bearer API_KEY.

Paramètres

NomDansTypeRequisDescription
subscriptionIdpathstringOui—
fromquerystring (date)NonPremier jour (UTC), inclus. Par défaut : 29 jours avant to.
toquerystring (date)NonDernier jour (UTC), inclus. Par défaut : aujourd’hui. Période maximale : 366 jours.
subUserIdquerystringNonLimiter à un seul sous-utilisateur.

Réponse 200 OK

{
  "from": "2026-10-04",
  "to": "2026-10-05",
  "totalBytes": 2350000000,
  "totalRequests": 48210,
  "points": [
    {
      "date": "2026-10-04",
      "bytes": 1200000000,
      "requests": 24800
    },
    {
      "date": "2026-10-05",
      "bytes": 1150000000,
      "requests": 23410
    }
  ],
  "byCountry": [
    {
      "country": "AE",
      "bytes": 2350000000
    }
  ]
}

Exemples de code

curl
curl -s "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k/usage" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/residential/subscriptions/res_9x2m4k/usage", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k/usage`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Lister les sous-utilisateurs (identifiants de proxy séparés avec leur propre limite de trafic)

GET/v1/residential/subscriptions/{subscriptionId}/sub-users

Authentification : clé API dans l'en-tête Authorization: Bearer API_KEY.

Paramètres

NomDansTypeRequisDescription
subscriptionIdpathstringOui—

Réponse 200 OK

{
  "data": [
    {
      "id": "sub_3m9qk2",
      "label": "Client A",
      "username": "u7k2m9_scraper",
      "password": "PASSWORD",
      "trafficLimitBytes": 5000000000,
      "trafficUsedBytes": 1200000000,
      "enabled": true,
      "createdAt": "2026-10-05T14:03:11Z"
    }
  ],
  "limit": 50
}

Exemples de code

curl
curl -s "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k/sub-users" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/residential/subscriptions/res_9x2m4k/sub-users", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k/sub-users`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Créer un sous-utilisateur

POST/v1/residential/subscriptions/{subscriptionId}/sub-users

Authentification : clé API dans l'en-tête Authorization: Bearer API_KEY.

Paramètres

NomDansTypeRequisDescription
subscriptionIdpathstringOui—

Corps de la requête

ChampTypeRequisDescription
labelstringOuimax. 60 caractères
passwordstringNonGénéré si le champ est omis. — 64 caractères max.
trafficLimitBytesinteger (int64), nullableNon≥ 0
Exemple
{
  "label": "Scraper EU",
  "trafficLimitBytes": 5000000000
}

Réponse 201 Created

{
  "id": "sub_3m9qk2",
  "label": "Client A",
  "username": "u7k2m9_scraper",
  "password": "PASSWORD",
  "trafficLimitBytes": 5000000000,
  "trafficUsedBytes": 1200000000,
  "enabled": true,
  "createdAt": "2026-10-05T14:03:11Z"
}

Exemples de code

curl
curl -s -X POST "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k/sub-users" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"label":"Scraper EU","trafficLimitBytes":5000000000}'
Python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.post(f"{API}/residential/subscriptions/res_9x2m4k/sub-users", headers=HEADERS, json={"label": "Scraper EU", "trafficLimitBytes": 5000000000}, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k/sub-users`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ label: 'Scraper EU', trafficLimitBytes: 5000000000 }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Mettre à jour un sous-utilisateur : libellé, plafond, activation ou désactivation, nouveau mot de passe

PATCH/v1/residential/subscriptions/{subscriptionId}/sub-users/{subUserId}

Authentification : clé API dans l'en-tête Authorization: Bearer API_KEY.

Paramètres

NomDansTypeRequisDescription
subscriptionIdpathstringOui—
subUserIdpathstringOui—

Corps de la requête

ChampTypeRequisDescription
labelstringNonmax. 60 caractères
trafficLimitBytesinteger (int64), nullableNon≥ 0
enabledbooleanNon—
regeneratePasswordbooleanNon—
Exemple
{
  "enabled": false
}

Réponse 200 OK

{
  "id": "sub_3m9qk2",
  "label": "Client A",
  "username": "u7k2m9_scraper",
  "password": "PASSWORD",
  "trafficLimitBytes": 5000000000,
  "trafficUsedBytes": 1200000000,
  "enabled": true,
  "createdAt": "2026-10-05T14:03:11Z"
}

Exemples de code

curl
curl -s -X PATCH "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k/sub-users/sub_3m9qk2" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'
Python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.patch(f"{API}/residential/subscriptions/res_9x2m4k/sub-users/sub_3m9qk2", headers=HEADERS, json={"enabled": False}, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k/sub-users/sub_3m9qk2`, {
  method: 'PATCH',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ enabled: false }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Supprimer un sous-utilisateur

DELETE/v1/residential/subscriptions/{subscriptionId}/sub-users/{subUserId}

Authentification : clé API dans l'en-tête Authorization: Bearer API_KEY.

Paramètres

NomDansTypeRequisDescription
subscriptionIdpathstringOui—
subUserIdpathstringOui—

Réponse 204 No Content

Pas de corps : le code d'état est la réponse.

Exemples de code

curl
curl -s -X DELETE "https://africaproxies.com/api/v1/residential/subscriptions/res_9x2m4k/sub-users/sub_3m9qk2" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://africaproxies.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.delete(f"{API}/residential/subscriptions/res_9x2m4k/sub-users/sub_3m9qk2", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.status_code)  # 204: done
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/residential/subscriptions/res_9x2m4k/sub-users/sub_3m9qk2`, {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(res.status); // 204: done

Pays où un produit est disponible

GET/v1/catalog/countries

Public : aucune clé API requise.

Paramètres

NomDansTypeRequisDescription
productquerystringNonRestreindre aux lieux où ce produit est disponible (residential, mobile, mobile-gb).

Réponse 200 OK

{
  "data": [
    {
      "code": "AE",
      "name": "United Arab Emirates",
      "region": "Asia",
      "products": [
        "residential",
        "mobile",
        "mobile-gb"
      ],
      "cities": 6,
      "asns": 2,
      "carriers": 2
    }
  ]
}

Exemples de code

curl
curl -s "https://africaproxies.com/api/v1/catalog/countries"
Python
import os
import requests

API = "https://africaproxies.com/api/v1"

r = requests.get(f"{API}/catalog/countries", timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/catalog/countries`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Villes ciblables dans un pays

GET/v1/catalog/countries/{countryCode}/cities

Avec product=mobile ou product=mobile-gb, uniquement les villes où existent des modems 4G/5G.

Public : aucune clé API requise.

Paramètres

NomDansTypeRequisDescription
countryCodepathstringOuiISO 3166-1 alpha-2, en majuscules.
productquerystringNonRestreindre aux lieux où ce produit est disponible (residential, mobile, mobile-gb).

Réponse 200 OK

{
  "data": [
    {
      "id": "dubai",
      "name": "Dubai",
      "state": null
    }
  ]
}

Exemples de code

curl
curl -s "https://africaproxies.com/api/v1/catalog/countries/AE/cities"
Python
import os
import requests

API = "https://africaproxies.com/api/v1"

r = requests.get(f"{API}/catalog/countries/AE/cities", timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/catalog/countries/AE/cities`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

FAI sélectionnables (ASN) dans un pays, pour le résidentiel uniquement

GET/v1/catalog/countries/{countryCode}/asns

Public : aucune clé API requise.

Paramètres

NomDansTypeRequisDescription
countryCodepathstringOuiISO 3166-1 alpha-2, en majuscules.

Réponse 200 OK

{
  "data": [
    {
      "asn": 7922,
      "name": "Comcast Cable"
    }
  ]
}

Exemples de code

curl
curl -s "https://africaproxies.com/api/v1/catalog/countries/AE/asns"
Python
import os
import requests

API = "https://africaproxies.com/api/v1"

r = requests.get(f"{API}/catalog/countries/AE/asns", timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://africaproxies.com/api/v1';

const res = await fetch(`${API}/catalog/countries/AE/asns`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

1 GB 1,23 $US · Recharge du compte à partir de 25 $US

Choisir 1 GB