# Perplexity Search Scraper — Answers, Citations & Sources (`memo23/perplexity-search-scraper`) Actor

Scrape Perplexity answers for any query: the full answer text, every citation with title and URL, and the source list. Bring your own Perplexity key or use ours. Bulk queries in, JSON, CSV or Excel out.

- **URL**: https://apify.com/memo23/perplexity-search-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** SEO tools, AI, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 perplexity answers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Perplexity Search Scraper — Answers, Citations & Sources

> **$0.010 per answer** · bring your own Perplexity key or use ours · the answer *and* every citation

Ask **Perplexity** anything and get the answer back as data: the full answer text, every **citation** with its title, domain and URL, and the source list. Paste one query or a thousand, one per line, and export JSON, CSV or Excel.

### Why use this scraper

- **Citations as structured data.** Every source Perplexity cites comes back with title, domain and URL, ready for a sheet or a database.
- **Your key or ours.** Run it on a paid Apify plan and use our Perplexity credit, or paste your own key and bill your own Perplexity account — your key works on any plan, including the free one.
- **Built for lists.** One query per line, answered in parallel, one row each.
- **Priced per answer.** $0.010 when an answer comes back, nothing when one does not.
- **Same row shape as our other AI engines.** The ChatGPT Search Scraper and the combined AI Search Scraper emit identical fields, so one parser reads all three.

### Use cases

- See which domains Perplexity cites for the queries that matter to your brand.
- Track whether your site is being used as a source, and which page.
- Compare Perplexity's answer against ChatGPT's for the same question.
- Feed answers and citations into an LLM visibility or share-of-voice report.
- Pull answers in bulk for research, content planning or competitive monitoring.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `queries` | string | — (required) | One query per line |
| `perplexityModel` | string | default | Model override, e.g. a deeper research model |
| `perplexityApiKey` | string (secret) | — | Your own key; required on the free Apify plan |
| `maxItems` | integer | `10000` | Hard cap on answer rows |
| `maxConcurrency` | integer | `4` | Queries answered in parallel |

```json
{
    "queries": "best CRM tools for startups\nbest project management software"
}
```

### Output

| Field | Description |
|---|---|
| `query` | The query this row answers |
| `engine` | Always `perplexity` |
| `answer` | The full answer text |
| `sources` | `[{ url, domain, title }]` — every citation |
| `sourceUrls` | The same URLs as a flat list, handy for sheets |
| `followUpQuestions` | Suggested next questions, when returned |
| `model` | The model that answered |
| `scrapedAt` | ISO timestamp |

```json
{
    "query": "best CRM tools for startups",
    "engine": "perplexity",
    "answer": "The best CRM for a startup depends on your stage and go-to-market motion…",
    "sources": [
        { "url": "https://attio.com/f/best-crm-for-startups", "domain": "attio.com", "title": "Best CRMs for startups" }
    ],
    "sourceUrls": ["https://attio.com/f/best-crm-for-startups"],
    "followUpQuestions": [],
    "model": "openai/gpt-6-luna",
    "scrapedAt": "2026-11-01T10:00:00.000Z"
}
```

### Pricing

**$0.010 per answer**, plus a $0.005 actor-start fee per GB of run memory. A query that returns no answer is not charged. 100 answers cost $1.00.

Perplexity charges per request behind the scenes, which is why this engine costs more than a scraped one. Paste your own Perplexity key in `perplexityApiKey` to bill your own Perplexity account instead.

### FAQ

**Do I need a Perplexity API key?** Not on a paid Apify plan — ours is used. On the free plan you do need your own key, because each query spends real money against a paid API.

**Which model answers?** Perplexity's default, unless you set `perplexityModel`. The model that actually answered is reported in every row.

**Why did a query return no answer?** A request can fail or time out. That row is skipped and not charged; the rest of the run is unaffected.

**Can I get ChatGPT answers too?** Yes — the [ChatGPT Search Scraper](https://apify.com/memo23/chatgpt-search-scraper) does the same for ChatGPT, and the [AI Search Scraper](https://apify.com/memo23/ai-search-scraper) runs ChatGPT, Perplexity and Google AI Overviews together in one job with the same output fields.

**Do I need a proxy?** No. This engine talks to an API directly, so there is no proxy setting at all.

### Support

Found a bug or need another field? Open an issue on the Actor's Issues tab — it is monitored.

### 🤖 For AI Agents & LLM Apps

**Purpose:** Turn a list of queries into Perplexity answers with their citations.

**Minimal input (tested):**

```json
{ "queries": "best CRM tools for startups", "maxItems": 5 }
```

**Behaviors agents should know:**

- One row per query; `engine` is always `perplexity`.
- `sources[]` and `sourceUrls[]` are parallel — same URLs, one with metadata.
- Billing is `perplexity-answer` at $0.010, only on a returned answer. Bound with `maxItems`.
- On a free Apify plan the run stops immediately unless `perplexityApiKey` is supplied.

### ⚠️ Disclaimer

This Actor retrieves answers from Perplexity's public API. Use the output in line with Perplexity's terms and applicable law; answers are machine-generated and may be wrong or out of date, so verify before relying on them. You are responsible for how you use the output.

### SEO Keywords

perplexity scraper, perplexity api, perplexity search scraper, scrape perplexity answers, perplexity citations, perplexity sources, AI search scraper, LLM visibility, AI brand monitoring, generative engine optimization, GEO tracking, AI answer tracking, sonar api, AI SEO, apify perplexity.

# Actor input Schema

## `queries` (type: `string`):

What to ask Perplexity — one query per line. Each line becomes one answer row.

## `perplexityModel` (type: `string`):

Model override, e.g. "sonar" (default) or a deeper research model. Leave empty for the default.

## `perplexityApiKey` (type: `string`):

Paste a Perplexity API key to bill your own Perplexity account instead of using ours. Required on the free Apify plan, optional on a paid plan.

## `maxItems` (type: `integer`):

Hard cap on answer rows for the whole run.

## `maxConcurrency` (type: `integer`):

How many queries run at once.

## Actor input object example

```json
{
  "queries": "best CRM tools for startups",
  "maxItems": 10000,
  "maxConcurrency": 4
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": "best CRM tools for startups"
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/perplexity-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": "best CRM tools for startups" }

# Run the Actor and wait for it to finish
run = client.actor("memo23/perplexity-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": "best CRM tools for startups"
}' |
apify call memo23/perplexity-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/perplexity-search-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/y6cfuzX1qktsKKbPt/builds/wjzfDZjZe2lp9dzdb/openapi.json
