Quora Answers Scraper avatar

Quora Answers Scraper

Pricing

from $1.00 / 1,000 answer scrapeds

Go to Apify Store
Quora Answers Scraper

Quora Answers Scraper

Scrape Quora answers from question URLs, profiles, topics and Spaces: full text, views, upvotes, shares, comment counts, dates, AI-written flag and author credentials. Follow related questions to find more. No login needed. Export to CSV, Excel or JSON.

Pricing

from $1.00 / 1,000 answer scrapeds

Rating

0.0

(0)

Developer

CHEN-SHU-CHEN

CHEN-SHU-CHEN

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

What is Quora Answers Scraper?

You want to know what people actually say about a topic, a product or a competitor, and Quora has years of long-form answers on it. Reading them in a browser means opening each question, scrolling past the ads, expanding answers one by one and copying numbers into a sheet.

Paste Quora question, answer, profile, topic or Space URLs, mixed together, and get one row per answer with its full text (plain, Markdown and HTML), views, upvotes, shares and comment count, when it was written and last edited, whether Quora marks it as AI-written, and who wrote it: name, credential, verified badge, and how many answers and views they have across Quora. Questions, Space posts and profiles get rows of their own. No login is needed.

Built for reading pages you can point at. Quora shows no search results to logged-out visitors, so this Actor does not take keywords. To discover questions, give it a few questions on your subject and turn on Follow related questions: it reads the related questions Quora lists on each one, as many hops out as you set.

Because it runs on Apify, you can schedule a weekly re-read, call it through the API, connect it to Make, Zapier or Google Sheets, and export the table as CSV, Excel or JSON.

How to scrape Quora answers

  1. Open the Input tab and paste URLs into Quora URLs, one per line. All of these work:
    • a question: https://www.quora.com/What-is-X
    • one answer: https://www.quora.com/What-is-X/answer/Jane-Doe
    • a profile: https://www.quora.com/profile/Jane-Doe
    • a topic: https://www.quora.com/topic/Economics
    • a Space: https://humanity.quora.com/
    • other languages: https://es.quora.com/..., https://de.quora.com/...
  2. Set Answers per question (20 by default) and, for profiles, Answers per profile.
  3. Optional: pick an Answer order (recommended, most recent, most upvoted), or turn on Follow related questions.
  4. Click Start. A question with 20 answers takes a few seconds.
  5. Open the Output tab. The Answers only view shows the answer columns; question, post and profile rows appear in it with those columns empty, so filter on type to keep answers only. Inputs that could not be read are in the table too, with a status and a reason.

What data does it return?

Every row has a type: answer, question, post (a Space post) or profile.

Answer rows

FieldNotes
answerId, url
questionId, questionTitle, questionUrl, questionAnswerCount
text, markdown, htmlThe full answer. Logged-out pages carry the whole text, not a preview
wordCount, images, links, embedsImages with width, height, caption and full-size URL; every outbound link and citation
createdAt, updatedAtISO 8601, UTC. updatedAt is null for an answer never edited
views, upvotes, shares, commentsExact numbers from Quora, not rounded
authorname, profileUrl, profileImageUrl, credential (as shown next to the answer), isVerified, isAnonymous, isAiAccount, followerCount, answerCount and contentViews (the author's totals)
isAiGeneratedQuora's own flag for machine-written answers
answerKindanswer, ai, equivalent (written for a question Quora treats as the same one) or promoted
originalQuestionFor equivalent answers: the question it was written for
isPromoted, promotedAdIdPaid answers, only when Include promoted answers is on
isPinned, isCollapsed, collapseReason, commentsDisabled, isTranslated, accessOption
space, topicThe Space or topic it was read from, with follower counts
language, source, inputUrl, scrapedAtsource is input, or related for a question found by crawling

Question rows

questionId, url, title, answerCount, answerCountWithRelated, followerCount, comments, topics, spacesCount, askerUserId, isLocked, isGeneratedQuestion (Quora wrote the question itself), isTrendyQuestion, isPartnerQuestion, mergedFrom (the URL you gave, when Quora merged it into this question), mergedInto, linkedQuestion, relatedQuestions (id, title and URL of every related question the page lists, often 50 or more), language.

Space post rows

postId, url, title, the same body, count, date and author fields as an answer, and space with its name, URL and follower count.

Profile rows

userId, name, url, profileImageUrl, credential, bio, workCredentials, schoolCredentials, locationCredentials, languageCredentials, followerCount, followingCount, answerCount, questionCount, postCount, contentViews (all time), answerViews, contentViewsLastMonth, topWriterYears, prizeWinningAnswers, publishedIn, knowsAbout (topics with the number of answers in each), spaces (with the number of items the user posted in each), isVerified, isAiAccount, isDeactivated, joinedAt.

Unknown is null, never 0. Quora does not show a question's creation date or view count, so those fields are not in the table at all, and a count Quora left out of a response is null.

How much does it cost to scrape Quora?

You pay per row delivered, not per minute or per request.

EventWhat it isPricePer 1,000
answer-scrapedOne answer with its text, counts and author$0.001$1
question-scrapedOne question row$0.001$1
post-scrapedOne Space post$0.001$1
profile-scrapedOne profile row$0.001$1

A question with 20 answers costs $0.021: 20 answers and the question row. Turn off Include a row for each question to pay for the answers only. Rows with a status other than ok (not found, blocked, not processed) are free, and an answer that turns up twice in one run, say on a question and on its author's profile, is delivered and charged once.

The proxy is included. The Actor reads through Apify's US residential proxy by default, because Quora's Cloudflare answers Apify's datacenter IPs with HTTP 403 on question pages; residential IPs read them normally. That traffic, about 20 MB per 1,000 answers, is paid by the Actor, not by you, so the price per row is the same whichever proxy is used.

Is it free to try?

Apify's free plan includes $5 of usage a month, which covers about 5,000 answers.

How do I cap what a run can spend?

Set a maximum charge for the run when you start it. Each row is written and charged in one step by Apify's own SDK, which writes a row only when the remaining budget covers it, so you are never charged for a row you did not get. When the budget runs out, the inputs the Actor never reached come back as not_processed rows, free, and an input it stopped in the middle of gets a free partial row saying how far it got. If a row cannot be written or charged, the run stops the same way rather than keep working unbilled. The run also stops cleanly, with the same free rows, shortly before its timeout.

Input example

{
"urls": [
"https://www.quora.com/Whats-a-counterintuitive-result-of-economics-logic-that-nonetheless-rings-true",
"https://www.quora.com/profile/Adam-DAngelo"
],
"maxAnswersPerQuestion": 20,
"answerSort": "upvotes",
"maxAnswersPerProfile": 20,
"crawlRelatedQuestions": true,
"maxRelatedQuestions": 10
}

Output example

One answer row from a real run on 2026-10-18, with the long text fields shortened:

{
"type": "answer",
"status": "ok",
"answerId": 1477743807792023,
"url": "https://www.quora.com/Whats-a-counterintuitive-result-of-economics-logic-that-nonetheless-rings-true/answer/Victor-Xing",
"questionTitle": "What's a counterintuitive result of economics logic that nonetheless rings true?",
"text": "Unemployment rate may rise for the “right” reasons\nThe public generally considers the U.S.…",
"markdown": "**Unemployment rate may rise for the “right” reasons**\n\nThe public generally considers the…",
"wordCount": 617,
"links": ["https://data.bls.gov/dataViewer/view/timeseries/LNS14000000", "https://www.bls.gov/cps/cps_htgm.htm"],
"createdAt": "2024-08-18T07:54:40.729Z",
"updatedAt": "2024-08-19T08:04:44.555Z",
"views": 2128,
"upvotes": 14,
"shares": 25,
"comments": 1,
"author": {
"name": "Victor Xing",
"profileUrl": "https://www.quora.com/profile/Victor-Xing",
"credential": "Portfolio Manager, Rates and FX",
"isVerified": false,
"answerCount": 1105,
"contentViews": 7320562
},
"isAiGenerated": false,
"answerKind": "answer",
"language": "en"
}

What it cannot return

  • Keyword search results. Quora answers search with nothing for logged-out visitors. Use related-question crawling, topics or Spaces to discover content.
  • Comment text, upvoter lists, answer requests. The counts are there; the lists behind them are not.
  • A question's creation date or view count. Quora does not show them on the page.
  • Private or deleted content, and anything shown only to logged-in members.

FAQ

Why does the "most upvoted" order not start with the most upvoted answer?

Quora puts its own top answer first whatever order you pick, and sorts the rest. The Actor returns answers in the order Quora gives them.

What are equivalent answers?

When Quora decides two questions mean the same thing, it shows answers written for one on the other. Those answers have answerKind: "equivalent" and originalQuestion set to the question they were written for.

Why did an input come back blocked?

Quora sits behind Cloudflare, which blocks Apify's datacenter IPs on question pages, so the default proxy is Apify's US residential proxy. A blocked request is retried on a fresh IP with fresh cookies. If you choose a datacenter proxy yourself, three blocks in a row switch the rest of the run to the US residential proxy (unless you turn that off), starting a new session there and retrying the page that was blocked. If inputs still come back blocked, run again later. After 5 failed inputs in a row the run stops and marks the rest not_processed, free; change that with Stop after this many failed inputs in a row.

What happens when Quora changes its site?

The Actor reads the same data Quora's own pages load, which is undocumented and can change. The query IDs it calls are looked up again in Quora's code when Quora retires one, so routine deploys do not break it. If a page can no longer be read, that input comes back as parse_error instead of a row of wrong numbers, and a single answer or post whose text cannot be read comes back as its own free parse_error row while the rest of the page is delivered.

What happens if Apify restarts a run?

Apify sometimes moves a running Actor to another server. The Actor saves which inputs are finished, and after a restart it reads back the rows already delivered from the dataset, so it carries on without charging any of them again. The input or related question that was in progress is read again from the start, and only its new rows are charged.

The Actor reads only what any logged-out visitor can see and uses no account. Whether you may use the data depends on what you do with it and where you are, and Quora's terms limit automated collection. This is not legal advice; check the rules that apply to you.

Something broke or a number looks wrong

Open an issue on the Issues tab with the URL and the run link.