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

Paste Quora keywords or links and get questions with view and answer counts, answers with text, upvotes and dates, plus author profiles, spaces, topics and space posts. No login needed. Export to JSON, CSV or Excel, or run it on a schedule.

- **URL**: https://apify.com/crawl_craft/quora-scraper.md
- **Developed by:** [Crawl Craft](https://apify.com/crawl_craft) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 results

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

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

### 🚀 What is Quora Scraper?

Quora Scraper is an Apify Actor that collects public Quora questions, answers, profiles, spaces, topics and space posts from keywords or Quora links, with no login needed. Every result is structured data with view counts, upvotes, answer text, dates and authors, ready to export as JSON, CSV or Excel.

Copying answers from Quora by hand takes forever. Paste a keyword or a link, press **Start**, and open the output tables while the run is still going.

- 🔗 **Keywords and links in one list.** Mix keywords with question, answer, topic, profile, space or post links in the same run.
- 📚 **Seven output tables.** This Quora data scraper saves one All results table plus separate tables for questions, answers, profiles, spaces, topics and posts.
- ⚡ **Live results.** Rows are saved as soon as they are found, so the tables fill while the run is working.
- 🧹 **Clean fields.** Counts are numbers, dates are UTC timestamps, and answer text is plain text with images and external links listed separately.
- 🔑 **No login, no key.** Start a run from the Console or through the Apify API and use it as a Quora API alternative.

### 📊 What data can you extract from Quora?

Every run fills an All results table and six detail tables, so one Quora data extraction run can cover questions, answers, people and communities. Because Quora is a Q\&A site, this Quora Q\&A scraper keeps the question, its answers and the author details together.

The All results table has one row per record. These are its fields:

| Field | Description | Example |
|---|---|---|
| `record_type` | What the row is: question, answer, profile, space, topic, post or error. | `question` |
| `url` | Main Quora link of the record. | `https://www.quora.com/What-is-AI-all-about-1` |
| `source_context` | Which keyword or link produced the row, how it was found and when. | `{"seed_type": "keyword", "seed_value": "ai"}` |
| `question` | Question details: id, title, link, views, answer, follower and comment counts, topics and related questions. | `{"id": 30493109, "title": "What is AI all about?"}` |
| `answers` | Answers collected for the question (question rows). | `[]` |
| `answer` | Answer details: text, date, upvotes, views, author (answer rows). | see the answers table |
| `profile` | Quora profile details and counts (profile rows). | see the profiles table |
| `space` | Quora space details and counts (space rows). | see the spaces table |
| `topic` | Quora topic details and top writers (topic rows). | see the topics table |
| `post` | Space post details (post rows). | see the posts table |
| `error` | Why an input produced no results (error rows are not charged). | `question not found` |

#### Quora questions scraper

The questions table has one row per question. It works as a Quora question extractor: `questionId`, `title`, `url`, `views`, `answers` (the count Quora shows), `followers`, `comments`, `answersSaved`, `topics`, `relatedQuestions`, `isLocked`, `seedValue`, `discoveredVia` and `scrapedAt`.

#### Quora answers scraper

The answers table has one row per answer, with its question. As a Quora answer extractor it returns `answerId`, `url`, `text`, `wordCount`, `postedAt`, `updatedAt`, `upvotes`, `views`, `shares`, `comments`, `authorName`, `authorUrl`, `authorCredential`, `authorVerified`, `isAiGenerated`, `isPaywalled`, `images`, `externalLinks`, `questionId`, `questionTitle` and `questionUrl`.

#### Quora profile scraper

The profiles table holds `profileId`, `name`, `url`, `credential`, `bio`, `image`, `isVerified`, `joinedAt`, `followers`, `following`, `answers`, `questions`, `posts`, `contentViewsAllTime`, `contentViewsLastMonth` and `prizeWinningAnswers`. A profile link also returns that person's answers.

#### Quora spaces scraper

The spaces table holds `spaceId`, `name`, `url`, `description`, `icon`, `cover`, `followers`, `contributors`, `admins`, `moderators` and `items`. A space link also returns the answers and posts of that space.

#### Quora topic scraper

The topics table holds `topicId`, `name`, `url`, `image`, `followers` and `mostViewedWriters`. The posts table holds `postId`, `url`, `title`, `text`, `wordCount`, `postedAt`, `upvotes`, `views`, `shares`, `comments`, `authorName`, `authorUrl`, `spaceName`, `spaceUrl`, `images` and `externalLinks`.

### 💡 Use cases for Quora data

- **Question research:** use the Actor as a Quora keyword research tool. Search a keyword, then sort the questions table by `views` and `answers` to see which `title` values attract attention.
- **Market research:** Quora market research starts with a niche keyword. Compare `views`, `followers` and `comments` across the questions asked about it.
- **Competitor research:** Quora competitor research works by searching a rival product name and reading the answer `text`, `upvotes` and `authorCredential`.
- **Content planning:** collect Quora content ideas from `title` and `relatedQuestions`, then keep the questions with the most `views`.
- **Finding experts:** Quora lead generation begins with finding the right people. The profiles table gives `name`, `credential`, `bio`, `followers` and `contentViewsLastMonth`, all public profile fields.
- **Brand mentions:** Quora brand monitoring can use your brand name as the keyword with `timeFilter` set to Past Week, run on a schedule.
- **Following one writer or space:** Quora answer tracking works with a profile or space link and `timeFilter` set to Past Day, so each daily run returns only recent answers and posts.
- **Research datasets:** prepare Quora data for AI training from the plain-text `text` and `upvotes` of each answer, after checking Quora's terms and the copyright of the answers.

#### More goals and the fields that serve them

| Goal | Paste this | Read these fields |
|---|---|---|
| Quora audience research | a keyword or a topic link | `topics`, `relatedQuestions`, `authorCredential` |
| Quora questions for SEO | several keywords | `title`, `views`, `topics` |
| Quora question research by theme | a keyword with `searchType` set to Question | `title`, `answers`, `answersSaved` |
| Find top Quora writers | a topic link | `mostViewedWriters`, then paste the profile links |
| Quora space research | a space link | `followers`, `contributors`, `items` |
| Quora topic research | a topic link | `followers`, `mostViewedWriters` |

### 🛠️ How to scrape Quora

This Quora scraping tool runs in the Apify Console, so there is nothing to install.

1. Create an Apify account and open Quora Scraper from the Store.
2. Add keywords or Quora links to **Keywords or Quora links**, one per line. You do not need to build a Quora crawler or list every link, because a keyword is matched to Quora topics and related questions.
3. Choose the **Result type for keywords**: Question gives one row per question with its answers nested, Answer gives one row per answer.
4. Set **Max results per keyword or link**, **Answers per question** and the **Answer date filter**.
5. Click **Start** and watch the rows appear.
6. Open the **Output** tab, pick a table and export it.

#### Scrape Quora questions from a keyword

To scrape Quora questions, put a keyword such as Cheesecake in `urls` and keep `searchType` on Question. Only questions whose title fits the keyword are kept.

#### Scrape Quora answers with upvotes

To scrape Quora answers one per row, set `searchType` to Answer. Use `answersPerQuestion` to decide how many answers each question brings, or 0 for all that Quora shows.

#### Scrape Quora without login

You can scrape Quora without login because the Actor reads public pages only and has no account field. Quora hides some lists from visitors who are not logged in, so very long lists can be shorter than what a member sees.

#### Scrape Quora with Python

To scrape Quora with Python, start the Actor through the Apify API client and read the dataset items. The API tab shows ready-made Python snippets.

#### Download Quora answers to CSV

To download Quora answers to CSV, open the Answers table in the **Output** tab and choose CSV in the export menu.

#### Export Quora data to Excel

To export Quora data to Excel, pick any table in the **Output** tab and choose Excel. JSON, CSV and XML are available there too.

### 💰 How much does it cost to scrape Quora?

Quora Scraper uses pay-per-event pricing. A result costs $1.5 per 1,000 on the Free row of the table below, and the price per 1,000 falls on the other rows.

| Apify plan | Price per 1,000 results |
|---|---|
| Free | $1.5 |
| Bronze | $1.4 |
| Silver | $1.3 |
| Gold / Platinum / Diamond | $1.2 |

Each run also has a small Actor Start event of $0.00005 per run start. See the Pricing tab for current rates.

One result is one row of the All results table. A question row with its answers nested inside counts as one result, and with `searchType` set to Answer every answer row counts as one. Rows that report a problem are not charged. Example: 1,000 results cost $1.5 on the Free row, plus the Actor Start event.

### ⬇️ Input

As a Quora data extractor it has one required field, `urls`: keywords or Quora links, one per line. The other fields are optional.

![Quora Scraper input form with keywords and Quora links](IMAGE_URL_PLACEHOLDER "quora-scraper-input-form.png")

See the Input tab for every option.

| Field | Type | Description |
|---|---|---|
| `urls` | array (required) | A keyword or any Quora link: question, answer, topic, profile, space or space post. |
| `searchType` | string | `Question` (answers nested) or `Answer` (one row per answer). Links to profiles, spaces and topics always return their own details. |
| `maxItemsPerQuery` | integer | Results to collect for each keyword or link. Use 0 for everything Quora shows without a login. |
| `answersPerQuestion` | integer | How many answers to collect for each question. Use 0 for all answers Quora shows without a login. |
| `timeFilter` | string | `All Time`, `Past Hour`, `Past Day`, `Past Week`, `Past Month` or `Past Year`. Keeps only answers and posts written inside this period. |
| `proxyConfiguration` | object | Optional connection settings. The default works for most runs. |

Example input:

```json
{
  "urls": [
    "Cheesecake",
    "https://www.quora.com/What-is-AI-all-about-1"
  ],
  "searchType": "Question",
  "maxItemsPerQuery": 20,
  "answersPerQuestion": 5,
  "timeFilter": "All Time",
  "proxyConfiguration": { "useApifyProxy": false }
}
```

💡 Keep `maxItemsPerQuery` low for a first test run, then raise it.

### ⬆️ Output

The scraped results are shown as a dataset in the **Storage** tab. The table view is for convenience and doesn't show **all the fields**.

![Quora Scraper output table with questions and answers](IMAGE_URL_PLACEHOLDER "quora-scraper-output-table.png")

Download the data as JSON, CSV, Excel or XML, or read it through the Apify API. If you want to export Quora answers for a report, the Answers table is the one to pick. A run summary with counts and timing is saved as `RUN_SUMMARY` in the key-value store.

Example output, built only from the example values in the output schema. It is not a captured run, and a real row carries more fields:

```json
{
  "record_type": "question",
  "url": "https://www.quora.com/What-is-AI-all-about-1",
  "source_context": { "seed_type": "keyword", "seed_value": "ai" },
  "question": { "id": 30493109, "title": "What is AI all about?" },
  "answers": []
}
```

#### Questions table output

Example of the same question in the questions table, again from the schema example values:

```json
{
  "questionId": 30493109,
  "title": "What is AI all about?",
  "views": 22962,
  "answers": 10,
  "answersSaved": 5
}
```

Export the tables and you can build your own Quora dataset for analysis. Fields Quora does not show for an item are returned empty.

### ⚠️ Limitations and error handling

- Only public pages are read. Private data and anything behind a login is out of reach.
- Quora hides some lists from visitors who are not logged in, so keyword results and very long answer lists can be shorter than what a member sees.
- For a keyword, only questions whose title fits the keyword are kept. Run a small test to see how many questions your keyword returns.
- `answers` in the questions table is the count Quora shows and can include merged questions. `answersSaved` is what this run collected.
- With a date filter other than All Time, questions without an answer in that period are skipped.
- When the maximum charge per run is reached, the run stops cleanly and keeps what it saved.
- An input that produces nothing becomes a row with `record_type` set to `error` and a short message in `error`. Error rows are not charged.

| Message in `error` | Meaning | What to do |
|---|---|---|
| `not a keyword or a supported Quora URL` | The input is not a keyword and not a Quora link the Actor reads. | Use a keyword or a link to a question, answer, topic, profile, space or post. |
| `question not found`, `topic not found`, `profile not found`, `space not found`, `post not found` | Quora showed no page for that link. | Check the link and try again. |
| `no answers inside the date filter` | The question has no answers in the chosen period. | Choose a longer period. |
| `no results` or `no results inside the time filter` | Nothing was collected for the input, or nothing fell inside the chosen period. | Check the keyword or link, then run again. |
| `could not load - ...` | The pages did not load during the run. | Try again later. |

### 🔌 Integrating Quora Scraper with other apps

Quora Scraper can be started from the Console, from the Apify API, on a schedule and from webhooks. See the API tab for ready-made JavaScript, Python and CLI snippets.

- Run it on a recurring basis with [Apify schedules](https://docs.apify.com/platform/schedules). A daily run with `timeFilter` set to Past Day collects the answers written since the day before.
- Send a [webhook](https://docs.apify.com/platform/integrations/webhooks) when a run finishes, to pass the results to your own pipeline.
- Connect the dataset to other apps through [Apify integrations](https://docs.apify.com/platform/integrations).
- Let an AI agent call the Actor through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

Quora Scraper has no built-in change tracking. Each run is a fresh collection, so runs with overlapping periods can return the same answer twice. For ongoing Quora scraping, keep the date filter and the schedule interval the same length.

### 🔗 More Apify Actors by crawl_craft

These other public-data Actors by the same account may help when the conversation you want to study happens somewhere else.

| Actor | What it extracts | When to use it |
|---|---|---|
| [Hacker News Data Scraper](https://apify.com/crawl_craft/hacker-news-data-scraper) | Stories searched by keyword or browsed from the front page, newest, Ask, Show, Jobs and Best, with points, comments, authors, dates and top comments. | Use it when the discussion you need is on Hacker News rather than Quora. |
| [Facebook Posts Search Scraper](https://apify.com/crawl_craft/facebook-posts-search-scraper) | Public Facebook posts found by keyword or hashtag, with text, author, reactions, comments and shares. | Use it when you want what people post publicly about a topic on Facebook. |
| [Telegram Scraper](https://apify.com/crawl_craft/telegram-scraper) | Public Telegram channels: messages, views, reactions, media, links, polls and subscriber counts, with keyword and date filters. | Use it when the community you follow talks in public Telegram channels. |

### ⚖️ Is it legal to scrape Quora?

Quora Scraper only collects pages that Quora shows to visitors who are not logged in, and it does not collect private data. Questions, answers and profiles can still contain personal data, and answers may be protected by copyright, so collect them only for a legitimate reason and follow Quora's terms and the privacy laws that apply to you, such as GDPR (Regulation (EU) 2016/679). This is not legal advice, so consult a lawyer if you are unsure. Apify explains the topic in [is web scraping legal](https://blog.apify.com/is-web-scraping-legal/) and [what is ethical web scraping](https://blog.apify.com/what-is-ethical-web-scraping-and-how-do-you-do-it/).

### ❓ FAQ

#### How much does it cost?

Quora Scraper charges $1.5 per 1,000 results on the Free row of the pricing table, with lower prices on the other rows, plus a small Actor Start event. See the Pricing tab for current rates.

#### Do I need a Quora API key or a login?

No. You need no Quora API key and no Quora account. You only need an Apify account to run the Actor.

#### How many results can I get?

You set it with `maxItemsPerQuery`, and 0 means everything Quora shows without a login. The real number depends on the keyword, because Quora hides some lists from visitors who are not logged in.

#### Can I scrape private data?

No. The Actor reads public pages only, so private profiles, messages and anything behind a login are out of reach.

#### Why does a question show fewer answers than Quora's count?

The `answers` count comes from Quora and can include merged questions. `answersSaved` shows how many answers this run collected, and `answersPerQuestion` sets the target.

#### Is it a Quora downloader for images and files?

No. Image and external link addresses found inside an answer are listed in `images` and `externalLinks`, but the files themselves are not downloaded.

#### Can I use it with Python or the API?

Yes. Start a run and read the dataset through the Apify API. The API tab has ready-made JavaScript, Python and CLI snippets.

#### Do I need proxies?

No. `proxyConfiguration` is optional and the default settings work for most runs.

#### Can I use it through an MCP server?

Yes. An AI agent can call the Actor through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

#### Do I have to install a Quora web scraper on my computer?

No. Quora Scraper runs on the Apify platform, so you start it from the Console or the API and download the results.

### 💬 Your feedback

Found a problem or need another field? Open an issue in the Issues tab with the input you used and the run link. For a custom solution, write to hello.crawlcraft@gmail.com.

# Actor input Schema

## `urls` (type: `array`):

One per line: a keyword (for example Cheesecake) or any Quora link - question, answer, topic, profile, space or space post. Keywords are matched to Quora topics and related questions.

## `searchType` (type: `string`):

Question gives one row per question with its answers nested inside. Answer gives one row per answer. Links to profiles, spaces and topics always return their own details.

## `maxItemsPerQuery` (type: `integer`):

Results to collect for each keyword or link. Use 0 for everything Quora shows without a login.

## `answersPerQuestion` (type: `integer`):

How many answers to collect for each question. Use 0 for all answers Quora shows without a login.

## `timeFilter` (type: `string`):

Keep only answers and posts written inside this period. Questions without an answer in the period are skipped.

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

Optional connection settings. The default works for most runs.

## Actor input object example

```json
{
  "urls": [
    "Cheesecake",
    "https://www.quora.com/What-is-AI-all-about-1"
  ],
  "searchType": "Question",
  "maxItemsPerQuery": 20,
  "answersPerQuestion": 5,
  "timeFilter": "All Time",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Every record the run found.

## `questions` (type: `string`):

One row per question.

## `answers` (type: `string`):

One row per answer, with its question.

## `profiles` (type: `string`):

One row per profile link.

## `spaces` (type: `string`):

One row per space.

## `topics` (type: `string`):

One row per topic.

## `posts` (type: `string`):

One row per space post.

## `summary` (type: `string`):

Counts and timing of the run.

# 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 = {
    "urls": [
        "Cheesecake",
        "https://www.quora.com/What-is-AI-all-about-1"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawl_craft/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 = {
    "urls": [
        "Cheesecake",
        "https://www.quora.com/What-is-AI-all-about-1",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("crawl_craft/quora-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 '{
  "urls": [
    "Cheesecake",
    "https://www.quora.com/What-is-AI-all-about-1"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call crawl_craft/quora-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawl_craft/quora-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/15dwR03b90xR9VGuk/builds/AbkP53y9LRJVJ7sOI/openapi.json
