# Quora Scraper (`sian.agency/quora-scraper`) Actor

Scrape Quora questions and answers into clean datasets — question text, answer & follower counts, topics, and top answers (author, credential, upvotes, views, text). Fast overview or full per-question detail. Engagement scoring built in. No account or API key needed.

- **URL**: https://apify.com/sian.agency/quora-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Social media, Marketing, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.60 / 1,000 question overview extracteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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, Topics & Upvotes 📕

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Store-Instagram AI Transcript](https://img.shields.io/badge/Store-Instagram%20AI%20Transcript-E4405F)](https://apify.com/sian.agency/instagram-ai-transcript-extractor?fpr=sian) [![Store-TikTok AI Transcript](https://img.shields.io/badge/Store-TikTok%20AI%20Transcript-25F4EE)](https://apify.com/sian.agency/best-tiktok-ai-transcript-extractor?fpr=sian) [![Store-Facebook AI Transcript](https://img.shields.io/badge/Store-Facebook%20AI%20Transcript-1877F2)](https://apify.com/sian.agency/facebook-ai-transcript-extractor?fpr=sian)

#### 🎉 Turn any Quora question into a clean dataset — the question, its engagement, its topics, and the top answers, all in one run.
##### Built for researchers, marketers and content teams who need real Q&A data at scale, without copy-paste.

### 📋 Overview

**Quora is where millions ask and answer the questions your audience is searching for** — and this scraper turns that into structured data you can actually use. Point it at a question, a topic, or a search, and get back clean records: the question text, how many answers and followers it has, the topics it sits under, and the top answers with their authors, credentials, upvotes and views.

**Why teams choose this scraper:**
- ✅ **Real fields, ready to use**: question text, answer count, follower count, topics, and ranked top answers — no HTML to clean.
- ⚡ **One seed, many questions**: every question page also surfaces its related-question rail, so a handful of seeds expands into dozens of questions.
- 🎯 **Engagement scoring built in**: a 0–100 reach score and top-answer upvote totals so you can sort by what matters.
- 💰 **Pay only for results**: transparent pay-per-result pricing with a free trial — no subscriptions.
- 💎 **Two depths**: fast Overview for sizing a topic cheaply, or full Detail for the complete answer set.
- ✨ **No account, no cookies, no setup**: paste a link and run.

### ✨ Features

- 📕 **Question intelligence**: question text, asker, answer count, follower count, view count.
- 🏆 **Top answers**: author name, profile link, credential, upvotes, views and full answer text.
- 🏷️ **Topic mapping**: every topic a question belongs to, plus a dominant-topic field.
- 📊 **Engagement score**: a single 0–100 metric blending answers, followers and top upvotes.
- 🔎 **Related-question discovery**: each question page reveals ~20 related questions automatically.
- 🧭 **Four ways in**: by question URL, by topic, by search URL, or by free-text query.
- 🖼️ **Inline media**: answer images captured with a thumbnail-first field.
- 📄 **Run report**: an HTML summary of every run, plus clean JSON/CSV/Excel export.

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose how to find questions
Pick a **Search mode** — paste Quora **question URLs**, name a **topic**, paste a **search URL**, or type a **query**.

#### Step 2: Choose how deep to go
Pick **Overview** (fast — a question plus its related rail) or **Detail** (the full answer set per question).

#### Step 3: Run and export
Click **Start**. Download results as JSON, CSV or Excel, or pull them via the API.

### 🎯 Use Cases

- **Audience & market research** — discover the exact questions people ask about your space.
- **Content ideation** — find high-engagement questions to answer in blogs, videos and FAQs.
- **Topic discovery** — map the topics and sub-topics around a theme.
- **Competitor & brand monitoring** — track questions and answers mentioning a product or company.
- **SEO & FAQ mining** — build FAQ pages and long-tail content from real questions.
- **Training-data collection** — gather Q&A pairs for fine-tuning and evaluation.

### 📊 Output Data

Each question returns a structured record:

| Field | Description |
|---|---|
| `id` | Canonical question id (URL slug) |
| `url` | Absolute question URL |
| `question_text` | The question, as plain text |
| `asker` | Name of the user who asked (when shown) |
| `answer_count` | Total answers on the question |
| `follower_count` | Users following the question |
| `view_count` | Question views (when exposed) |
| `engagement_score` | 0–100 reach proxy (answers + followers + top upvotes) |
| `topics` | All topics the question belongs to |
| `dominant_topic` | The primary topic |
| `top_answers` | Top answers — author, credential, upvotes, views, text |
| `top_answer_upvotes` | Highest upvote count among captured answers |
| `total_top_upvotes` | Sum of captured top-answer upvotes |
| `images` | Inline answer image URLs |
| `thumbnail` | First inline answer image |
| `metadata` | Run context (mode, seeds, tier, run id, timestamp) |

### 💡 Tips

- **Start in Overview** to map a topic cheaply, then switch to **Detail** on the questions worth the full answer set.
- **Question-URL mode is the richest seed** — each page also reveals its related questions.
- **Use the free trial** to validate fields before scaling up.

### ❓ FAQ

**Do I need a Quora account or cookies?** No — just paste a link and run.

**What's the difference between Overview and Detail?** Overview returns each question plus its related rail with engagement counts and topics (no per-answer text). Detail fetches each question page for the full set of top answers (author, credential, upvotes, views, text).

**Why doesn't free-text search return many results?** Quora's public search is limited when logged out. For the richest results, seed with **question URLs** or **topics** — each question page also surfaces ~20 related questions.

**How is the engagement score calculated?** It's a 0–100 proxy that log-scales and blends answer count, follower count and the top answer's upvotes — a quick way to sort questions by reach.

**Can I export to CSV/Excel?** Yes — results export as JSON, CSV, Excel or via the API.

### 🔧 Support

Questions or feature requests? Reach SIÁN Agency at **apify@sian-agency.online**. Love the actor? A [5-star review](https://apify.com/sian.agency/quora-scraper/reviews) helps us ship more features.

---

*Disclaimer: This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Quora. "Quora" and all related names and marks are trademarks of their respective owners. Use this actor in compliance with Quora's terms of service and all applicable laws, and only to collect publicly available information.*

# Actor input Schema

## `scrapeMode` (type: `string`):

How deep to scrape each question.

- **Overview** = fast scan — one fetch per seed returns the seed question **plus its related-question rail** (~20 questions), each with question text, answer count, follower count and topics. Best for sizing a topic cheaply.
- **Detail** = the full per-question record — top answers (author, credential, upvotes, views, text), asker, topics, and engagement counts — one fetch per question.
## `searchMode` (type: `string`):

How to choose which questions to scrape. Fill in the matching section below.

- **By question URL** — paste Quora question URLs (the richest seed: each page also reveals ~20 related questions).
- **By topic** — a topic name like `Programming`.
- **By search URL** — paste a Quora `/search` URL.
- **By query** — free-text search.
## `maxResults` (type: `integer`):

Maximum questions to return this run. The free tier is capped at 25.
## `questionUrls` (type: `array`):

Paste one or more Quora **question** URLs (used when Search mode = **By question URL**). Each cleared question page yields the question itself plus its related-question rail, so a few seeds expand into many questions.

**Example:** `https://www.quora.com/What-is-the-best-laptop-for-programming`
## `topics` (type: `array`):

Topic names to scrape when Search mode = **By topic** (e.g. `Programming`, `Machine-Learning`, `Travel`). Each maps to a Quora topic feed.
## `searchUrls` (type: `array`):

Paste one or more Quora **search** URLs (used when Search mode = **By search URL**). Any `q`/`type` filters baked into each URL are kept.

**Example:** `https://www.quora.com/search?q=best%20laptop&type=question`
## `query` (type: `string`):

Free-text search used when Search mode = **By query** — e.g. `best laptop for programming`, `learn python`.

## Actor input object example

```json
{
  "scrapeMode": "overview",
  "searchMode": "byQuestionUrl",
  "maxResults": 100,
  "questionUrls": [
    "https://www.quora.com/What-is-the-best-laptop-for-programming"
  ],
  "topics": [
    "Programming"
  ],
  "searchUrls": [
    "https://www.quora.com/search?q=best%20laptop&type=question"
  ],
  "query": "best laptop for programming"
}
````

# Actor output Schema

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

All extracted Quora question records (question text, answer/follower counts, topics, top answers).

## `scrapingSummary` (type: `string`):

HTML summary of the run — questions extracted, pages fetched, and a sample table.

# 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 = {
    "questionUrls": [
        "https://www.quora.com/What-is-the-best-laptop-for-programming"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/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 = { "questionUrls": ["https://www.quora.com/What-is-the-best-laptop-for-programming"] }

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/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 '{
  "questionUrls": [
    "https://www.quora.com/What-is-the-best-laptop-for-programming"
  ]
}' |
apify call sian.agency/quora-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Quora Scraper",
        "description": "Scrape Quora questions and answers into clean datasets — question text, answer & follower counts, topics, and top answers (author, credential, upvotes, views, text). Fast overview or full per-question detail. Engagement scoring built in. No account or API key needed.",
        "version": "1.0",
        "x-build-id": "DH5q2zZg6ward6aRP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~quora-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-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/sian.agency~quora-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-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/sian.agency~quora-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-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": {
                    "scrapeMode": {
                        "title": "🧭 Scrape mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "How deep to scrape each question.\n\n- **Overview** = fast scan — one fetch per seed returns the seed question **plus its related-question rail** (~20 questions), each with question text, answer count, follower count and topics. Best for sizing a topic cheaply.\n- **Detail** = the full per-question record — top answers (author, credential, upvotes, views, text), asker, topics, and engagement counts — one fetch per question.",
                        "default": "overview"
                    },
                    "searchMode": {
                        "title": "🔎 Search mode",
                        "enum": [
                            "byQuestionUrl",
                            "byTopic",
                            "bySearchUrl",
                            "byQuery"
                        ],
                        "type": "string",
                        "description": "How to choose which questions to scrape. Fill in the matching section below.\n\n- **By question URL** — paste Quora question URLs (the richest seed: each page also reveals ~20 related questions).\n- **By topic** — a topic name like `Programming`.\n- **By search URL** — paste a Quora `/search` URL.\n- **By query** — free-text search.",
                        "default": "byQuestionUrl"
                    },
                    "maxResults": {
                        "title": "🔢 Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum questions to return this run. The free tier is capped at 25.",
                        "default": 100
                    },
                    "questionUrls": {
                        "title": "🔗 Question URLs",
                        "type": "array",
                        "description": "Paste one or more Quora **question** URLs (used when Search mode = **By question URL**). Each cleared question page yields the question itself plus its related-question rail, so a few seeds expand into many questions.\n\n**Example:** `https://www.quora.com/What-is-the-best-laptop-for-programming`",
                        "default": [
                            "https://www.quora.com/What-is-the-best-laptop-for-programming"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "topics": {
                        "title": "🏷️ Topics",
                        "type": "array",
                        "description": "Topic names to scrape when Search mode = **By topic** (e.g. `Programming`, `Machine-Learning`, `Travel`). Each maps to a Quora topic feed.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchUrls": {
                        "title": "🔍 Search URLs",
                        "type": "array",
                        "description": "Paste one or more Quora **search** URLs (used when Search mode = **By search URL**). Any `q`/`type` filters baked into each URL are kept.\n\n**Example:** `https://www.quora.com/search?q=best%20laptop&type=question`",
                        "items": {
                            "type": "string"
                        }
                    },
                    "query": {
                        "title": "💬 Search query",
                        "type": "string",
                        "description": "Free-text search used when Search mode = **By query** — e.g. `best laptop for programming`, `learn python`."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
