← All surfaces
surfaces: ["perplexity"]

The Perplexity scraper API — the real answer page, not Sonar.

Perplexity is the most citation-dense AI surface there is — which makes the difference between its consumer UI and its Sonar API matter. We capture the real Perplexity answer page browser-first on our own fleet: the answer, its numbered citations with character ranges, and the related queries it surfaced, normalized into one Envelope with screenshot and proof-of-page retained.

Credit cost
3 credits / successful capture
Fidelity
fidelity: consumer_ui
Regions
9 countries
POST /v1/search
curl -sS -X POST "https://api.aisearchapi.dev/v1/search" \
  -H "Authorization: Bearer $AISEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "tallest mountain in Japan",
    "surfaces": ["perplexity"],
    "regions": [{ "country": "US" }],
    "method": "auto"
  }'
# → 202 { "jobId": "…", "children": ["….perplexity.…"] }
# then poll GET /v1/jobs/:childId — or add ?mode=sync for an inline Envelope

What a Perplexity capture returns.

One canonical Envelope — the same four sections every surface returns — with the fields Perplexity actually populates. Field names below are the contract, not a summary.

answer.text · answer.markdown · answer.blocks

The rendered Perplexity answer with blocks whose referenceIds map to its numbered citations.

evidence.sources[]

Perplexity’s citation list is its spine: each source carries a role, cited boolean and charRanges — which characters of the answer each citation backs.

evidence.fanOut

The related/sub-queries observed on the page, provenance-marked observed vs inferred.

evidence.mentions

Derived brand mentions with position, sentiment and supporting source ids — share-of-voice per capture.

provenance

consumer_ui fidelity, loginState, observed model label, requested-vs-effective region, captcha and stop-reason fields — the full honesty layer.

job.artifacts

Screenshot + proof-of-page HTML + raw payload in R2, retained durably (no 24h expiry).

Envelope excerpt — perplexity
{
  "job": {
    "id": "job_9f8e7d6c.perplexity.own-fleet.US",
    "surface": "perplexity",
    "method": "own-fleet",
    "status": "completed",
    "warnings": [],
    "artifacts": {
      "screenshotKey": "shot/job_9f8e7d6c.perplexity.own-fleet.US.png",
      "proofHtmlKey": "proof/job_9f8e7d6c.perplexity.own-fleet.US.html",
      "rawKey": "raw/job_9f8e7d6c.perplexity.own-fleet.US"
    }
  },
  "provenance": {
    "acquisition": "own-fleet",
    "fidelity": "consumer_ui",
    "loginState": "logged_out",
    "model": { "observedLabel": "Perplexity", "inferred": false,
               "confidence": 0.99 },
    "webSearch": { "enabled": true, "known": true },
    "surfacePresent": true,
    "region": { "requested": "US", "effective": "US" }
  },
  "answer": {
    "text": "Mount Fuji is the tallest mountain in Japan at 3,776 m.",
    "markdown": "**Mount Fuji** is the tallest mountain in Japan at 3,776 m.",
    "blocks": [ { "type": "paragraph", "referenceIds": [1], "text": "…" } ]
  },
  "evidence": {
    "sources": [
      { "id": 1, "url": "https://en.wikipedia.org/wiki/Mount_Fuji",
        "title": "Mount Fuji", "role": "cited", "cited": true }
    ],
    "fanOut": { "provenance": "observed",
                "queries": ["tallest mountain in Japan height"] }
  }
}

The lanes, stated honestly.

Default own-fleet browser capture of the real Perplexity UI — the live v1 lane. The official-api (Sonar) and managed-vendor lanes are phase-2, not yet wired.

Phase-2 lanes are roadmap, not product — pinning one returns an honest 422 today. The full picture is on the capability matrix.

own-fleet · auto
Supported
managed-vendor
Phase 2
official-api
Phase 2
cost: 3 credits (charged on success only)free tier: 500 credits — pricing
regions:USGBDEFRCAAUINJPBR+ optional city & language

Perplexity capture, asked precisely.

Do you use the Perplexity Sonar API?

Not on the live lane. The v1 path is our own-fleet browser capture of the real Perplexity UI — consumer_ui fidelity, the same page a user sees. A Sonar official-api lane is phase-2 (not yet wired), and when it ships it will be an explicit pin stamped api_surrogate, never a silent substitute.

How are Perplexity’s citations represented?

As evidence.sources[]: each source has an id referenced by the answer blocks, a role (cited / retrieved / related), a cited boolean, and charRanges — the exact character spans of the answer that source backs. It is the structure Perplexity’s numbered footnotes imply, made machine-readable.

What does a Perplexity capture cost?

Three credits per successful capture — the lowest-cost surface — with every field included and charged-on-success. 500 free credits to start.

Can I capture the same prompt across countries?

Yes — pass multiple regions ({ country, city?, language? }) from the nine v1 countries and each fans out into its own child Envelope, so you can diff how Perplexity answers and cites per market.

What happens if Perplexity returns nothing?

Absence-is-data: the job still completes, provenance.surfacePresent is false, warnings carries surface_absent, and the screenshot still exists — so even the absence is provable. It costs no credits.

Capture Perplexity in one request.

500 free credits, charged only on success — and the same Envelope for every other surface when you add them.