Zonder KYC — geen ID, selfie of documenten. Betaal met crypto.
Taal: Nederlands
Kies 1 GB

API-referentie

Bestellingen

Bekijk de abonnementen en hun prijzen, koop een abonnement met je saldo (nieuwe dienst, meer verkeer of verlenging van een poort) en bekijk je eerdere bestellingen.

5 min leestijd

Eindpunten op deze pagina

  • GET /v1/catalog/products: Producten, abonnementen en prijzen
  • POST /v1/orders: Een abonnement kopen met je saldo (nieuwe dienst, meer verkeer of verlenging van de poort)
  • GET /v1/orders: Bestellingen weergeven
  • GET /v1/orders/{orderId}: Een bestelling ophalen

Basis-URL https://localserpproxy.com/api/v1. Authenticatie, fouten en limieten: zie het API-overzicht.

Producten, abonnementen en prijzen

GET/v1/catalog/products

Alle producten met hun abonnementen en prijzen, precies zoals ze in rekening worden gebracht bij het bestellen.

Openbaar: geen API-sleutel nodig.

Response 200 OK

{
  "data": [
    {
      "id": "residential",
      "name": "Residential proxies",
      "description": "Residential traffic for manual local search, advertising, price and application checks in US cities. State, city and ZIP selection, subject to available exits; no promise of GPS position or rankings.",
      "unit": "GB",
      "plans": [
        {
          "id": "res-10",
          "productId": "residential",
          "name": "Local team",
          "quantity": 10,
          "unit": "GB",
          "durationDays": null,
          "price": "7.50",
          "pricePerUnit": "0.75",
          "popular": false,
          "features": [
            "US city selection, subject to availability",
            "Traffic stays until used",
            "Rotating or sticky sessions"
          ],
          "available": true,
          "countries": null
        }
      ]
    }
  ]
}

Codevoorbeelden

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

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

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

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

Koop een abonnement met je saldo (nieuwe dienst, extra verkeer of verlenging van een poort)

POST/v1/orders

Wordt altijd betaald met het prepaid saldo: de API berekent de prijs (catalogusprijs × quantity), het bedrag wordt van je saldo afgeschreven, de dienst wordt aangemaakt of verlengd en de bestelling wordt teruggegeven als completed met de bijbehorende fulfillment. Je proxygegevens zijn direct beschikbaar.

  • Nieuw residentieel verkeer: { "planId": "res-10" }.
  • Nieuw roterend 4G/5G-verkeer (per GB): { "planId": "mgb-10" } (een verkeersabonnement met productId: "mobile-gb", geleverd in fulfillment.residentialSubscriptionId).
  • Verkeer toevoegen aan een bestaand abonnement: { "planId": "res-10", "options": { "subscriptionId": "res_9x2m4k" } }: het abonnement moet bij het product van de dienst horen.
  • Nieuwe mobiele poort(en): { "planId": "mob-us-30d", "quantity": 1, "options": { "country": "US" } }, eventueel met carrier (bekijk de providers van een land bij Mobiele poorten). Zoneabonnementen zijn alleen geldig in de landen van hun zone (422 op options.country anders).
  • Een mobiele poort verlengen: { "planId": "mob-us-7d", "options": { "portId": "mob_2v8k1q" } } voegt de looptijd van het abonnement toe aan expiresAt.

Saldo te laag → 402 insufficient_balance, met het ontbrekende bedrag en een voorgestelde opwaardering in error.details (missing, suggestedTopUp). Bij een fout wordt er niets afgeschreven. Om het verschil te betalen, start je een opwaardering met hetzelfde verzoek in purchase (POST /v1/topups): het abonnement wordt gekocht zodra de opwaardering is bijgeschreven.

Authenticatie: API-sleutel in de Authorization: Bearer API_KEY-header.

Parameters

NaamInTypeVerplichtBeschrijving
Idempotency-KeyheaderstringNeeUnieke sleutel (bijv. een UUID) om een POST veilig opnieuw te proberen. 24 h bewaard. — max. 128 tekens

Requestbody

VeldTypeVerplichtBeschrijving
planIdstringJa—
quantityintegerNee1–100, standaard 1
optionsobjectNee—
Voorbeeld: Residentieel
{
  "planId": "res-10"
}
Voorbeeld: Mobiele poorten
{
  "planId": "mob-us-30d",
  "quantity": 1,
  "options": {
    "country": "US",
    "carrier": "verizon",
    "autoRenew": true
  }
}
Voorbeeld: Poort verlengen
{
  "planId": "mob-us-7d",
  "options": {
    "portId": "mob_2v8k1q"
  }
}
Voorbeeld: Mobiel verkeer
{
  "planId": "mgb-10"
}
Voorbeeld: Zonepoort
{
  "planId": "mob-us-30d",
  "options": {
    "country": "US",
    "carrier": "verizon"
  }
}

Response 201 Created

{
  "id": "ord_4f8k2m9q",
  "status": "completed",
  "productId": "residential",
  "planId": "res-10",
  "planName": "Local team",
  "quantity": 1,
  "unitPrice": "7.50",
  "subtotal": "7.50",
  "discount": "0.00",
  "total": "7.50",
  "promoCode": null,
  "currency": "USD",
  "topUpId": null,
  "options": {},
  "fulfillment": {
    "residentialSubscriptionId": "res_9x2m4k",
    "mobilePortIds": []
  },
  "createdAt": "2026-10-05T14:03:11Z",
  "paidAt": "2026-10-05T14:03:11Z"
}

Codevoorbeelden

curl
curl -s -X POST "https://localserpproxy.com/api/v1/orders" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"planId":"res-10"}'
Python
import os, uuid
import requests

API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}", "Idempotency-Key": str(uuid.uuid4())}

r = requests.post(f"{API}/orders", headers=HEADERS, json={"planId": "res-10"}, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
import { randomUUID } from 'node:crypto';

const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/orders`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Idempotency-Key': randomUUID(), 'Content-Type': 'application/json' },
  body: JSON.stringify({ planId: 'res-10' }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Bestellingen weergeven

GET/v1/orders

Authenticatie: API-sleutel in de Authorization: Bearer API_KEY-header.

Parameters

NaamInTypeVerplichtBeschrijving
pagequeryintegerNee≥ 1, standaard 1
perPagequeryintegerNee1–100, standaard 20
statusquerycompleted · cancelledNeeBestellingen worden aangemaakt als betaald (afgeschreven van het saldo). completed — betaald en geleverd (gegevens direct beschikbaar).
productIdquerystringNeeProduct-ID uit de catalogus. Waarden voor LocalSERP Proxy: residential (GB), mobile (dedicated 4G/5G-poorten) en mobile-gb (roterend 4G/5G-verkeer per GB). Clients moeten onbekende waarden kunnen verwerken.

Response 200 OK

{
  "data": [
    {
      "id": "ord_4f8k2m9q",
      "status": "completed",
      "productId": "residential",
      "planId": "res-10",
      "planName": "Local team",
      "quantity": 1,
      "unitPrice": "7.50",
      "subtotal": "7.50",
      "discount": "0.00",
      "total": "7.50",
      "promoCode": null,
      "currency": "USD",
      "topUpId": null,
      "options": {},
      "fulfillment": {
        "residentialSubscriptionId": "res_9x2m4k",
        "mobilePortIds": []
      },
      "createdAt": "2026-10-05T14:03:11Z",
      "paidAt": "2026-10-05T14:03:11Z"
    }
  ],
  "pagination": {
    "page": 1,
    "perPage": 20,
    "total": 1,
    "totalPages": 1
  }
}

Codevoorbeelden

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

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

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

const res = await fetch(`${API}/orders`, {
  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());

Een bestelling ophalen

GET/v1/orders/{orderId}

Authenticatie: API-sleutel in de Authorization: Bearer API_KEY-header.

Parameters

NaamInTypeVerplichtBeschrijving
orderIdpathstringJa—

Response 200 OK

{
  "id": "ord_4f8k2m9q",
  "status": "completed",
  "productId": "residential",
  "planId": "res-10",
  "planName": "Local team",
  "quantity": 1,
  "unitPrice": "7.50",
  "subtotal": "7.50",
  "discount": "0.00",
  "total": "7.50",
  "promoCode": null,
  "currency": "USD",
  "topUpId": null,
  "options": {},
  "fulfillment": {
    "residentialSubscriptionId": "res_9x2m4k",
    "mobilePortIds": []
  },
  "createdAt": "2026-10-05T14:03:11Z",
  "paidAt": "2026-10-05T14:03:11Z"
}

Codevoorbeelden

curl
curl -s "https://localserpproxy.com/api/v1/orders/ord_4f8k2m9q" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

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

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

const res = await fetch(`${API}/orders/ord_4f8k2m9q`, {
  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());

1 GB US$ 1,50 · zonder KYC

Bekijk de prijzen