Quora Scraper
Pricing
from $3.00 / 1,000 quora record scrapeds
Quora Scraper
Scrape Quora from a question, profile, space or topic URL, or a keyword, with the target type auto-detected. Export answer text, author, credentials, upvotes, views, dates, and question and profile metadata, with no cookies.
Pricing
from $3.00 / 1,000 quora record scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Share
What is Quora Scraper?
Quora Scraper turns public Quora question, profile, space and topic URLs into a flat dataset of records. Answer rows return the answer text, author name and profile link, upvotes, views, created and updated dates, and the question each answer belongs to. Content marketers, SEO teams, market researchers and AI agents use it to see what real people ask and answer about a topic, with the target type detected from each URL and no Quora login or cookies.
Why people use this Quora scraper
- One input for every target. Paste question,
/profile/,/q/space or/topic/URLs intostartUrls; the Actor detects each type. - Engagement on every answer.
upvotesandviewslet you rank answers and find the ones readers actually saw. - Plain text, ready to read. Quora's rich text is flattened into
answerText, so rows drop straight into spreadsheets and LLM prompts. - Answer context kept. Each answer row carries
questionTitleandquestionUrl, plusisMachineAnswerto separate AI-generated answers from human ones. - Cost control per URL.
maxItemsPerTargetcaps records for each target.
Best fit for this Actor
- Best fit for audience research, FAQ and content planning, and building Q&A corpora from public Quora pages.
- Designed for URL-driven work: start with the Quora pages you care about and collect their public answers and metadata.
- Quora groups closely related questions together, so answer rows can point to a sibling question through
questionUrl. Group byquestionUrlwhen you want strict per-question sets. - For the same research on Reddit threads, continue with Reddit Search Scraper and compare both audiences side by side.
Example workflow: from a question to a content brief
A content marketer at a coding bootcamp starts with three Quora question URLs about learning to program, with maxItemsPerTarget at 50. The dataset returns each answer's answerText, upvotes, views and createdAt. They sort answers by views, read the top ten, then tag recurring advice such as "build small projects" and "pick one language first". They export the table to a spreadsheet and feed the top answers into their brief as the questions the article must answer. A monthly schedule on the same URLs shows which new answers gain traction.
Input
{"startUrls": ["https://www.quora.com/What-is-the-best-way-to-learn-programming","https://www.quora.com/topic/Computer-Programming"],"maxItemsPerTarget": 50,"maxConcurrency": 5,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
| Field | Type | What it controls |
|---|---|---|
startUrls | array of strings | Quora question, profile (/profile/<name>), space (/q/<space>) or topic (/topic/<topic>) URLs. Add at least one. |
maxItemsPerTarget | integer | Records to collect per URL, from 1 to 1,000. Default 50. |
maxConcurrency | integer | Parallel browsers, from 1 to 10. Default 5. |
proxyConfiguration | object | Apify Proxy settings. Residential proxies give the smoothest access to Quora. |
Output
Each row has a type: question, answer, profile or space. Fields appear when Quora shows them on the page.
| Field | What it contains |
|---|---|
type, url | Record type and its Quora link |
questionTitle, questionUrl | The question the record belongs to |
answerText | Answer text as plain text |
upvotes, views | Answer engagement |
createdAt, updatedAt | When the answer was written and last edited |
authorName, authorProfileUrl, authorIsVerified | Answer author |
isMachineAnswer | true when Quora marks the answer as AI-generated |
name, bio, credential, profileImageUrl, isVerified, followerCount | Profile fields on profile records |
answerCount, topics, askedAt, description | Question and space metadata when the page shows it |
scrapedAt | Collection time |
Example answer row (author details are illustrative):
{"type": "answer","url": "https://www.quora.com/What-is-the-best-way-to-learn-a-programming-language/answer/Jordan-Lee-12","answerText": "Let's unfold the mystery. There are two ways to learn: reading alone, or building small projects while you read...","upvotes": 16,"views": 3382,"createdAt": "2015-09-29T05:08:24.024Z","updatedAt": "2015-09-29T10:32:27.214Z","authorName": "Jordan Lee","authorProfileUrl": "https://www.quora.com/profile/Jordan-Lee-12","authorIsVerified": false,"isMachineAnswer": false,"questionTitle": "What is the best way to learn a programming language?","questionUrl": "https://www.quora.com/What-is-the-best-way-to-learn-a-programming-language","scrapedAt": "2026-10-01T01:31:36.961Z"}
Each question URL also returns one question row with its questionTitle, url and scrapedAt.
Pricing
This Actor uses Pay per event with Apify platform usage included in the event price. You pay one Quora record scraped event for each record saved and a memory-based Actor Start event at $0.005 per GB of allocated memory (minimum one unit). For example, one question URL with maxItemsPerTarget at 50 is up to 50 record events plus the memory-based startup event. Records beyond your per-target cap are never collected or charged. The live Pricing tab on this page shows the current event prices.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~quora-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": ["https://www.quora.com/What-is-the-best-way-to-learn-programming"], "maxItemsPerTarget": 20}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("khadinakbar/quora-scraper").call(run_input={"startUrls": ["https://www.quora.com/What-is-the-best-way-to-learn-programming"],"maxItemsPerTarget": 20,})answers = [r for r in client.dataset(run["defaultDatasetId"]).iterate_items() if r["type"] == "answer"]print(sorted(answers, key=lambda r: r.get("views") or 0, reverse=True)[:5])
Use with AI agents (MCP)
Connect the Actor to Claude, ChatGPT or Cursor through Apify MCP and ask:
Collect up to 30 answers from this Quora question and summarize the three most-viewed pieces of advice, with links to each answer.
The agent passes the URL in startUrls, sets maxItemsPerTarget to 30, reads the dataset with get-dataset-items, keeps rows where type is answer, and cites each url. Each saved record is one event, so the per-target cap keeps the cost of the request predictable.
Best results
| Starting situation | Helpful action | Expected outcome |
|---|---|---|
| A specific question | Paste its full Quora URL | The question row plus its public answers |
| A broad theme | Use a /topic/ URL | Questions and answers under that topic |
| Smooth access | Select residential proxies in proxyConfiguration | Steady page loads |
| Ranking answers | Sort by views, then upvotes | The answers readers saw most |
| Human-only research | Filter isMachineAnswer to false | Answers written by people |
Builder's note
I built this around URLs because Quora research usually starts from a page someone already found, and one auto-detecting input keeps that simple. I found that answers are far more useful with their reach attached, so every answer row keeps views and upvotes next to the flattened text.
FAQ
Do I need a Quora account?
No. The Actor reads public Quora pages with no login or cookies.
Why does an answer show a different question URL?
Quora merges and groups similar questions, so an answer can belong to a sibling question. questionUrl always names the question the answer was written for.
How do I control cost?
Set maxItemsPerTarget; it caps the records per URL.
Responsible use
This Actor collects publicly visible Quora content. Answers include author names and profile links, which are personal data under laws such as the GDPR and CCPA, so use them with a lawful basis and respect Quora's terms of service. Quora is a trademark of its owner; this independent Actor is not affiliated with or endorsed by Quora.
Run outcomes
Read OUTPUT and RUN_SUMMARY together with the dataset. COMPLETE and PARTIAL count persisted useful records only. VALID_EMPTY means the upstream page answered successfully without matching records. INVALID_INPUT explains an unusable request. If required upstream requests fail and no useful records are saved, the run fails with UPSTREAM_FAILED. Startup billing still applies to empty and failed runs.