# Quora Scraper (`khadinakbar/quora-scraper`) Actor

Cookieless Quora scraper. Paste a question, profile, space, or topic URL — or a keyword — and export structured records: answer text, author, credentials, upvotes, views, dates, plus question and profile metadata. Auto-detects the target type. PPE. MCP-ready.

- **URL**: https://apify.com/khadinakbar/quora-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Social media, MCP servers, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 quora record scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Quora Scraper — Questions, Answers & Profiles

Extract structured data from **Quora** without logging in. Paste a question, profile, space, or topic URL and get back clean, flat records: answer text, author, credentials, upvotes, views, dates, plus question and profile metadata. The target type is **auto-detected** from each URL, so one Actor covers your whole Quora workflow.

Cookieless. No session tokens. MCP-ready for AI agents.

### What you can scrape

| Target | Paste this | You get |
|---|---|---|
| **Question** | `https://www.quora.com/<question-slug>` | Question title, topics, answer & follower counts, and every answer (author, text, upvotes, views, dates) |
| **Profile** | `https://www.quora.com/profile/<name>` | Name, verification, profile image, plus the person's recent answers (with credentials) |
| **Space** | `https://www.quora.com/q/<space>` | Questions and answers in the space |
| **Topic** | `https://www.quora.com/topic/<topic>` | Questions and answers under the topic |

### Pricing (Pay-Per-Event)

| Event | Price |
|---|---|
| Actor start | $0.005 per run |
| Quora record scraped | **$0.003 per record** |

A 50-record question scrape costs about **$0.155**. You only pay for records actually returned; anything skipped by your per-target limit is never charged.

### Quick start

1. Paste one or more Quora URLs into **Quora URLs** (`startUrls`) — question, profile, space, or topic.
2. Set **Max records per target** (`maxItemsPerTarget`) — this is also your cost ceiling.
3. (Recommended) Choose **residential proxies** under **Proxy configuration**. Quora is behind Cloudflare; residential IPs clear it most reliably.
4. Run. Download results as JSON, CSV, Excel, HTML, or RSS.

#### Example input

```json
{
  "startUrls": [
    "https://www.quora.com/What-is-the-best-way-to-learn-programming",
    "https://www.quora.com/profile/Adam-DAngelo"
  ],
  "maxItemsPerTarget": 50,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
````

#### Example output (one answer record)

```json
{
  "type": "answer",
  "url": "https://www.quora.com/What-is-the-best-way-to-learn-programming/answer/Jane-Doe",
  "questionTitle": "What is the best way to learn programming?",
  "questionUrl": "https://www.quora.com/What-is-the-best-way-to-learn-programming",
  "answerText": "Start by building small projects you actually care about...",
  "upvotes": 1243,
  "views": 58210,
  "createdAt": "2019-04-12T09:32:14.000Z",
  "updatedAt": "2021-02-03T18:10:55.000Z",
  "authorName": "Jane Doe",
  "authorProfileUrl": "https://www.quora.com/profile/Jane-Doe",
  "authorCredential": "Senior Software Engineer",
  "authorIsVerified": false,
  "scrapedAt": "2026-06-20T22:41:00.000Z"
}
```

Profile records carry `name`, `isVerified`, `profileImageUrl`, and the person's recent answers (with `authorCredential`); `bio` and follower counts are included when Quora exposes them on the page. Question records carry `questionTitle`, `answerCount`, `followerCount`, `askedAt`, and `topics[]`.

### Why this Actor

- **Cookieless** — no Quora login, no session cookies to paste or rotate. Just URLs or keywords.
- **Auto-detect** — one input for questions, profiles, spaces, and topics. No mode flag to get wrong.
- **Flat, agent-ready output** — stable, semantic keys; rich text flattened to plain text; nulls omitted. Built for LLMs and spreadsheets alike.
- **Honest billing** — you see the cost ceiling before the run starts, pay only for real records, and blocked runs fail clearly instead of silently charging for nothing.
- **MCP-ready** — call it from Claude, ChatGPT, or any MCP client as `apify--quora-scraper`.

### Use cases

- **Market & audience research** — mine what real people ask and answer about your category, product, or competitor.
- **Content & SEO** — surface high-engagement questions (by views/upvotes) to inform articles and FAQs.
- **Lead and expert sourcing** — collect author names, credentials, and profile links of people answering in your niche.
- **Training & analysis datasets** — build Q\&A corpora with author and engagement metadata.

### How it works

The Actor opens each target in a headless Chromium browser (which clears Quora's Cloudflare protection), then passively captures Quora's own GraphQL responses and embedded page cache as the page loads and scrolls. It flattens Quora's serialized rich text into plain text and emits one flat record per answer, question, or profile. It scrolls to paginate up to your `maxItemsPerTarget` limit.

### Tips for reliability

- **Use residential proxies.** Quora is protected by Cloudflare. Datacenter IPs are frequently challenged; residential IPs clear reliably. Select them under **Proxy configuration**.
- **Set a country** if you need geo-specific results.
- **Keep concurrency moderate.** The default of 5 balances speed and block-avoidance. Lower it if you see blocking.

### Input reference

| Field | Type | Description |
|---|---|---|
| `startUrls` | array | Quora URLs (question / profile / space / topic). Type auto-detected. At least one required. |
| `maxItemsPerTarget` | integer | Max records per URL (also the cost ceiling). Default 50. |
| `maxConcurrency` | integer | Parallel browsers (1–10). Default 5. |
| `proxyConfiguration` | object | Proxy settings. Residential recommended. |

### FAQ

**Do I need Quora login cookies?** No. This Actor is cookieless.

**Why are some runs empty or blocked?** Quora uses Cloudflare. On datacenter IPs you may be challenged. Switch to residential proxies for reliable access. Blocked runs end with a clear status message and do not charge for missing data.

**Does it get private or login-gated content?** No. It only collects publicly visible Quora content.

**How much does a run cost?** $0.005 to start plus $0.003 per record returned. A 50-record scrape ≈ $0.155.

### Legal

Use this Actor only for publicly available data and in compliance with Quora's Terms of Service and applicable laws (including data-protection regulations). You are responsible for how you use the scraped data. This Actor does not access private, login-gated, or personal data beyond what Quora displays publicly.

# Actor input Schema

## `startUrls` (type: `array`):

List of Quora URLs to scrape. Each may be a question page (https://www.quora.com/What-is-the-best-way-to-learn-programming), a profile (https://www.quora.com/profile/Adam-DAngelo), a space (https://www.quora.com/q/<space>), or a topic (https://www.quora.com/topic/<topic>). The type is auto-detected from the URL. At least one URL is required.

## `maxItemsPerTarget` (type: `integer`):

Maximum number of records to return for each URL or keyword. The Actor scrolls to paginate until this cap, then stops, so it doubles as your cost ceiling (each record is one billable event). Defaults to 50. Lower it for cheaper test runs.

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

How many target pages to scrape in parallel. Higher is faster but uses more proxy IPs and memory; lower is gentler on anti-bot defenses. Defaults to 5 (max 10). Leave default unless you hit blocking.

## `proxyConfiguration` (type: `object`):

Proxy settings. Residential proxies are strongly recommended — Quora is protected by Cloudflare and datacenter IPs are often challenged. Defaults to Apify Proxy automatic. Override to select residential proxies or a specific country for reliable access.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.quora.com/What-is-the-best-way-to-learn-programming"
  ],
  "maxItemsPerTarget": 20,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

All Quora records collected this run — answers, questions, profiles, spaces, and search results. Download as JSON, CSV, Excel, HTML, or RSS.

# 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 = {
    "startUrls": [
        "https://www.quora.com/What-is-the-best-way-to-learn-programming"
    ],
    "maxItemsPerTarget": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/quora-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 = {
    "startUrls": ["https://www.quora.com/What-is-the-best-way-to-learn-programming"],
    "maxItemsPerTarget": 20,
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.quora.com/What-is-the-best-way-to-learn-programming"
  ],
  "maxItemsPerTarget": 20
}' |
apify call khadinakbar/quora-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/quora-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Quora Scraper",
        "description": "Cookieless Quora scraper. Paste a question, profile, space, or topic URL — or a keyword — and export structured records: answer text, author, credentials, upvotes, views, dates, plus question and profile metadata. Auto-detects the target type. PPE. MCP-ready.",
        "version": "0.1",
        "x-build-id": "GDdw0bXGrvbsszfk9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~quora-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-quora-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/khadinakbar~quora-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-quora-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/khadinakbar~quora-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-quora-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Quora URLs",
                        "type": "array",
                        "description": "List of Quora URLs to scrape. Each may be a question page (https://www.quora.com/What-is-the-best-way-to-learn-programming), a profile (https://www.quora.com/profile/Adam-DAngelo), a space (https://www.quora.com/q/<space>), or a topic (https://www.quora.com/topic/<topic>). The type is auto-detected from the URL. At least one URL is required.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItemsPerTarget": {
                        "title": "Max records per target",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of records to return for each URL or keyword. The Actor scrolls to paginate until this cap, then stops, so it doubles as your cost ceiling (each record is one billable event). Defaults to 50. Lower it for cheaper test runs.",
                        "default": 50
                    },
                    "maxConcurrency": {
                        "title": "Max concurrent browsers",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many target pages to scrape in parallel. Higher is faster but uses more proxy IPs and memory; lower is gentler on anti-bot defenses. Defaults to 5 (max 10). Leave default unless you hit blocking.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Residential proxies are strongly recommended — Quora is protected by Cloudflare and datacenter IPs are often challenged. Defaults to Apify Proxy automatic. Override to select residential proxies or a specific country for reliable access.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
