Traffic API overview
The Traffic API delivers real human traffic — driven by genuine browsers through residential/mobile proxies — on the same prepaid balance as the SERP API. Two products:
| Product | Endpoint | What it delivers | Price |
|---|---|---|---|
| Website traffic | POST /v1/traffic/visits | Real visits with a controlled referrer (organic/social/direct) | $0.0002 / delivered visit |
| SEO traffic (CTR) | POST /v1/traffic/clicks | Real Google SERP searches that find and click your URL | $0.04 / delivered click |
Both create a campaign that runs asynchronously; you poll its status, watch it in app.serplify.io under Projects, or receive a completion webhook.
Endpoints
Section titled “Endpoints”| Method | Path | Purpose |
|---|---|---|
POST | /v1/traffic/visits | Create a website-traffic campaign |
POST | /v1/traffic/clicks | Create an SEO/CTR click campaign |
GET | /v1/traffic/campaigns/{id} | Campaign status (delivered / failed / status) |
POST | /v1/traffic/campaigns/{id}/pause | Pause delivery |
POST | /v1/traffic/campaigns/{id}/resume | Resume a paused campaign |
POST | /v1/traffic/campaigns/{id}/cancel | Stop and cancel remaining work |
How a campaign runs
Section titled “How a campaign runs”Under the hood each campaign becomes a queue of individual visit/click tasks that a pool of browser workers claims and executes with retries and lease-based recovery — so a large campaign delivers steadily over time, and worker restarts never lose or double-run work.
Webhooks
Section titled “Webhooks”Pass webhook_url when creating a campaign and Serplify POSTs it for the events
you subscribe to via webhook_events (default: ["completed"]):
| Event | When | Frequency |
|---|---|---|
completed | the whole campaign finishes | once (reliably retried) |
delivered | each successful visit/click | per delivery (best-effort) |
paused | the campaign auto-pauses (e.g. balance ran out) | on pause (best-effort) |
{ "url": "https://example.com", "quantity": 1000, "webhook_url": "https://you.example.com/hooks/serplify", "webhook_events": ["delivered", "paused", "completed"]}Every callback body carries an event field:
{ "event": "completed", "campaign_id": "…", "product": "clicks", "status": "completed", "quantity": 200, "delivered": 187, "failed": 13 }{ "event": "delivered", "campaign_id": "…", "product": "visits", "status": "running", "quantity": 1000, "delivered": 42, "failed": 1, "result": { "target": "example.com", "duration_seconds": 63 } }{ "event": "paused", "campaign_id": "…", "product": "clicks", "status": "paused", "quantity": 1000, "delivered": 120, "failed": 4, "reason": "insufficient_balance" }Campaign response
Section titled “Campaign response”Creating a campaign returns HTTP 202 with a campaign record:
{ "request_id": "req_…", "status": "accepted", "meta": { "api_version": "0.1.0", "time": 0.03, "cost": 0, "currency": "USD" }, "data": { "campaign_id": "…", "product": "visits", "quantity": 1000, "delivered": 0, "failed": 0, "status": "running", "status_url": "/v1/traffic/campaigns/…", "created_at": "2026-07-02T12:00:00.000Z" }}Billing
Section titled “Billing”You are charged per delivered result (visit or click), never on the
requested quantity up front and never on failed deliveries. Delivery draws
down your prepaid balance as it happens; the
campaign’s delivered count is the source of truth for what you paid.
If your balance runs out mid-campaign, delivery auto-pauses — the campaign
goes to paused and stops spending. Top up and resume it (or it resumes on
the next top-up) to finish the remaining work. You are never charged past your
balance.
Responsible use
Section titled “Responsible use”Serplify provides real signal and real data so you can test CTR, dwell time, referral behaviour, and search visibility at scale. It does not promise ranking manipulation, and you must own or be authorised to send traffic to the target URLs. See the Acceptable Use policy.