Quora Questions & Answers Scraper
Pricing
Pay per event
Quora Questions & Answers Scraper
Scrape Quora question pages by URL, topic, or keyword. Get question text, topic tags, and answer bodies with author, upvotes, and timestamps. Public pages only, no login or Quora+ required.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
π― What this scrapes
Quora hosts millions of publicly viewable question-and-answer threads across every topic imaginable, but there's no official export or API for pulling that content into your own dataset. This Actor takes Quora question URLs, topic URLs, or search keywords and returns structured rows: question text, topic tags, and answer bodies with author, upvote count, and post date. Content gated behind Quora's 'Continue Reading' or login wall is flagged, never bypassed β this is public-page-only, read-only scraping. Core Features: multi-seed input (question URLs, topic URLs, or keywords), per-question fault isolation, and typed dataset rows.
π₯ What we handle for you
- π‘οΈ Browser fingerprint rotation β
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so Quora sees a browser, not Python. - π Proxy session rotation via Apify Proxy, with the exit country pinned to your
proxyCountryCodeon every session. - π Retries with exponential backoff on
408 / 429 / 503β up to 5 attempts per page,Retry-Afterhonoured. - π§± Managed-challenge detection β a Cloudflare challenge page rotates the browser fingerprint and proxy session instead of being parsed as content.
- π§ Clean, typed dataset rows β Pydantic-validated, ISO-8601 timestamps, stable question/answer IDs, JSON / CSV / Excel export straight from the Apify Console.
- π° Pay-Per-Event pricing β you only pay for rows that hit your dataset. No data, no charge.
π‘ Use cases
- SEO / content-gap research β pull real Quora questions and top answers in your niche to find topics your own content doesn't cover yet.
- AI-answer-quality corpus building β collect real question/answer pairs with upvote signal as training or eval data for LLM answer-quality work.
- Community sentiment tracking β monitor how a topic's top answers change over time as new responses get upvoted.
- Competitive research β see which questions in your industry get the most engagement and who's answering them.
βοΈ How to use it
- Click Try for free at the top of the page.
- Fill in the input form β most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage β Dataset as JSON, CSV, or Excel β or fetch via the API.
π₯ Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
questionUrls | array | no | ['https://www.quora.com/What-is-the-best-way-to-learn-Python'] | Direct Quora question page URLs, e.g. https://www.quora.com/What-is-the-best-way-to-learn-Python. One of Question URLs⦠|
topicUrls | array | no | 'β' | Quora topic page URLs, e.g. https://www.quora.com/topic/Python-programming-language. Linked question URLs areβ¦ |
searchKeywords | array | no | 'β' | Keywords seeded into Quora's public search. Best-effort β degrades to zero rows if Quora's search results areβ¦ |
maxQuestions | integer | no | 50 | Cap on distinct questions processed per run, across all seeds combined. |
maxAnswersPerQuestion | integer | no | 10 | Cap on answer rows per question in 'Full answers' content mode. Ignored in 'Question metadata' mode. |
contentMode | string | no | 'full_answers' | 'Full answers' emits one row per answer. 'Question metadata' emits one row per question with no answer-body fetch. |
proxyCountryCode | string | no | 'US' | ISO-3166-1 alpha-2 country code pinned on every proxy session, e.g. US. |
runTimeoutSeconds | integer | no | 1200 | Wall-clock budget. Discovery and processing stop past this and in-flight rows are flushed. |
proxyConfiguration | object | no | {'useApifyProxy': True} | Apify Proxy configuration. FREE-tier auto-select by default β this Actor does not require RESIDENTIAL by default. |
Example input
{"questionUrls": ["https://www.quora.com/What-is-the-best-way-to-learn-Python"],"maxAnswersPerQuestion": 3,"contentMode": "full_answers","proxyCountryCode": "US","runTimeoutSeconds": 300,"proxyConfiguration": {"useApifyProxy": true}}
π€ Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
question_id | string | Id/slug parsed from the question URL. |
question_text | string | Question text β page H1 / schema.org Question.name. |
question_url | string | Canonical Quora question URL. |
question_topics | array | Topic breadcrumb/tag links attached to the question. May be empty. |
question_answer_count | ['integer', 'null'] | Total answer count, when exposed by the page. |
answer_id | ['string', 'null'] | Anchor id from the answer permalink. Null in question_metadata mode. |
answer_text | ['string', 'null'] | Rendered answer body, public view only. |
answer_is_truncated | ['boolean', 'null'] | True when the visible body ends in a 'Continue Reading' gate. |
answer_author_name | ['string', 'null'] | Display name on the answer byline. |
answer_author_handle | ['string', 'null'] | Profile slug from the byline link. |
answer_upvotes | ['integer', 'null'] | Upvote count, when server-rendered. |
answer_posted_at | ['string', 'null'] | ISO-8601 if absolute, else the raw relative string as scraped. |
answer_url | ['string', 'null'] | question_url plus the #answer-id fragment. |
content_mode | string | Echoes the run's contentMode input β 'full_answers' or 'question_metadata'. |
source_seed | string | The seed (question URL, topic URL, or keyword) that discovered this row. |
scraped_at | string | ISO-8601 scrape-time timestamp β not page data. |
Example output
{"question_id": "What-is-the-best-way-to-learn-Python","question_text": "What is the best way to learn Python?","question_url": "https://www.quora.com/What-is-the-best-way-to-learn-Python","question_topics": ["Python (programming language)","Programming Languages"],"question_answer_count": 214,"answer_id": "answer-123456789","answer_text": "Start with a small project instead of a course...","answer_is_truncated": false,"answer_author_name": "Jane Doe","answer_author_handle": "jane-doe-42","answer_upvotes": 318,"answer_posted_at": "Updated 3d ago","answer_url": "https://www.quora.com/What-is-the-best-way-to-learn-Python#answer-123456789","content_mode": "full_answers","source_seed": "https://www.quora.com/What-is-the-best-way-to-learn-Python","scraped_at": "2026-08-11T12:00:00Z"}
π° Pricing
Pay-Per-Event β you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.20 | One-off warm-up charge per run |
result-scraped | $0.002 | Per unique dataset item |
Example: 1 000 results at the rates above β $2.20. No subscription, no minimum, no card to start β Apify gives every new account $5 of free credit.
π§ Limitations
Public-page-only: no login, no authenticated cookies, no session-gated content. Content behind Quora's 'Continue Reading' or login wall is flagged via answer_is_truncated, never authenticated for. No comment-thread scraping, no user-profile scraping beyond the byline name/handle, no Quora Spaces / Quora+ paywalled content, no write actions (voting, following, posting), and no sentiment analysis or LLM post-processing β raw text only.
β FAQ
Does this scrape content behind Quora's login wall?
No. This Actor is public-page-only β it never authenticates. Answers gated behind a 'Continue Reading' prompt are returned with the visible text and answer_is_truncated: true; the gated remainder is never fetched.
Do I need a Quora account or API key?
No. Just supply Question URLs, Topic URLs, or Search keywords β no login, no API key, no Quora+ subscription.
Are search keywords as reliable as question or topic URLs?
Search keywords are best-effort β Quora's search results can be client-rendered, in which case that seed returns zero rows (logged, not an error) while the run continues. Question URLs and Topic URLs are the reliable primary seed types.
What happens if a question was deleted or the page fails to load?
That question is logged and skipped β one bad question never aborts the run. If every seed fails, the run exits with a clear status message instead of returning an empty dataset with a green status.
π¬ Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console β we ship fixes weekly and we read every report.