Quora Scraper With Human Answer Quality Score avatar

Quora Scraper With Human Answer Quality Score

Pricing

Pay per usage

Go to Apify Store
Quora Scraper With Human Answer Quality Score

Quora Scraper With Human Answer Quality Score

🚀 Quora Scraper extracts Questions, Answers, Profiles, Topics & Spaces from Quora. 📥 Perfect for research, lead gen, content insights & competitor analysis. ⚙️ Fast, structured data for smarter decisions.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

SimpleAPI

SimpleAPI

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

10 hours ago

Last modified

Share

Quora Scraper — Human Answer Quality Score

Quora Scraper With Human Answer Quality Score turns a Quora keyword search or a batch of direct URLs into questions, answers, profiles, topics, and spaces — with every answer scored by a transparent, reproducible quality formula and filtered by whether it came from a human or Quora's own AI-bot answer feature. It's built for content researchers who want genuine expert answers rather than AI-generated filler, community and moderation teams auditing answer quality at scale, and market researchers mining Quora's Q&A data for real customer language and pain points. No Quora login is required. Every section below documents an input, an output field, or exactly how the quality score and AI filter are computed.

What is Quora Scraper With Human Answer Quality Score?

This Actor scrapes Quora's public pages — questions with their full answer thread, profiles, topics, and spaces — using browser-impersonated HTTP requests with a headless-browser fallback for Cloudflare-protected pages, and adds two things a plain Quora scraper doesn't: a deterministic quality score for every answer, and a filter for excluding (or isolating) Quora's AI-generated answers.

Key capabilities, read from the source:

  • A fully transparent, reproducible quality score. compute_quality_score() in src/main.py blends three signals already present on the answer payload — upvotes (log-scaled, weight 0.5), answer length (weight 0.3), and freshness/recency (weight 0.2) — into a 0-100 qualityScore. No extra fetch is needed, and the same inputs always produce the same score.
  • AI-vs-human answer filtering. filterAiAnswers reads Quora's own isMachineAnswer flag to include everything, exclude AI-bot answers (the default), or keep only AI answers for studying bot content specifically — filtered-out answers are dropped before charging, not charged then discarded.
  • Real absolute timestamps, not just relative strings. absolute_time() derives an exact UTC ISO-8601 answer_created_at from the same creationTime microsecond field that also produces the relative answer_timestamp ("3y") string — both are included.
  • Cloudflare-aware GraphQL pagination. Answer pagination calls Quora's internal GraphQL endpoint, which is Cloudflare-protected; a curl-based POST that gets a "Just a moment" challenge automatically switches to running the same GraphQL call from inside a real headless browser page, which inherits the browser's already-solved cf_clearance cookie.
  • Sticky per-target residential IPs. Each scraped URL keeps one sticky proxy exit IP across all of its requests (page load plus answer pagination), since Quora's cookies and form keys tied to a session become invalid if the exit IP changes mid-target.
  • Optional LLM enrichment, off by default. aiEnhancement adds model-graded sentiment and topic keywords per kept answer when an API key is supplied — the deterministic qualityScore always runs regardless, and an enrichment failure leaves the AI fields null rather than blocking the row.

What data can I extract with Quora Scraper With Human Answer Quality Score?

Every field below is read directly from build_answer_row() and the scrape_question/scrape_profile/scrape_topic/scrape_space functions in src/main.py — dedicated dataset views (quality, overview, questions, answers, profiles, topics, spaces) group these by content type.

Answer fields

FieldExample ValueNotes
answer_text / answer_urlfull answer body / link
author_name / author_url / author_credentialsanswerer identity + stated credentials
upvotes / comments_count / shares_count342 / 18 / 12
answer_timestamp"3y"Quora's own relative-age string
answer_created_at2023-07-15T12:51:39+00:00Real absolute ISO timestamp, derived from the same source field
is_ai_answerfalseQuora's own isMachineAnswer flag
qualityScore78.4Deterministic 0-100 blend of upvotes/length/freshness — reproducible from the row alone
aiSentiment / aiTopics"positive" / ["career advice", "salary"]null unless aiEnhancement is on and succeeds

Question, profile, topic, and space fields

FieldExample ValueContent Type
title / answer_count / follow_count / topicsquestion text, counts, topic tagsquestion
name / bio / credentials / follower_count / following_count / answer_count / question_count / total_viewsprofile fieldsprofile
name / description / follower_count / question_counttopic fieldstopic
name / description / follower_count / post_count / contributor_countspace fieldsspace

Why not build this yourself?

Quora has no public API — every field here comes from reverse-engineered embedded GraphQL payloads (window.push() blobs) in the page HTML, and the internal endpoint used for answer pagination is Cloudflare-protected in a way that specifically blocks a plain HTTP client even from an IP whose page-load request just succeeded. Getting past that requires running a real headless browser to solve the Cloudflare challenge once, then replaying the GraphQL call from inside that browser context so it inherits the solved cookie — a two-engine fallback this Actor already implements. On top of that, a "blocked" Quora response is often a technically-valid 200 page that just lacks the real content blob (a throttle shell), so naive scrapers can silently collect empty data — this Actor validates that real, rich fields are actually present before accepting a page as successfully fetched.

How to use data extracted from Quora Scraper With Human Answer Quality Score?

Content and SEO research

Search a topic keyword with filterAiAnswers: "exclude" and sort by qualityScore to surface the most substantive human answers on a topic — useful groundwork for content briefs grounded in real audience language.

Community and moderation auditing

Set filterAiAnswers: "only" to isolate Quora's own AI-bot answers specifically, useful for auditing how much of a topic's Q&A content is bot-generated versus human-authored.

Market and customer research

Scrape questions and answers around your product category, using minUpvotes and minAnswerLength to filter down to substantive, community-endorsed answers before analyzing them for customer pain points and language patterns.

AI agents and content pipelines

Because qualityScore is deterministic and reproducible from the row itself, an agent can re-derive or verify the ranking without needing to re-fetch anything — and can branch on is_ai_answer before deciding whether to trust an answer as a human opinion.

🔼 Input sample

ParameterRequiredTypeDescriptionExample Value
searchQueriesNoarrayKeywords to search on Quora; each resolves to relevant URLs automatically.["python programming"]
directUrlsNoarrayDirect Quora URLs — questions, /profile/, /topic/, or /q/ (space) pages.["https://www.quora.com/What-is-Python-primarily-used-for"]
maxResultsNointeger (1–50000)Max results per search keyword, and max answers pulled per question. Default 50.20
filterAiAnswersNostring enuminclude, exclude (human-only, default), or only (AI-only)."exclude"
minUpvotesNointegerDrop answers under this upvote count. 0 = no threshold. Default 0.10
minAnswerLengthNointegerDrop answers shorter than this many characters. 0 = no gate. Default 0.200
scrapeAnswersNobooleantrue: full answer extraction. false: question metadata only, fast and cheap. Default true.true
aiEnhancementNobooleanAdd LLM-graded sentiment/topics per kept answer. Requires an API key. Default false.false
aiModelNostring enumModel/provider for enrichment (Claude, GPT, Gemini, Grok, DeepSeek, Sonar, Mistral variants). Default "claude-haiku-4-5"."claude-haiku-4-5"
aiApiKeyNostring (secret)Provider API key; falls back to the matching environment variable if empty."sk-..."
proxyConfigurationNoobjectStarts direct, escalates to datacenter then residential automatically on a block.{"useApifyProxy": true}
{
"searchQueries": ["machine learning careers"],
"maxResults": 20,
"filterAiAnswers": "exclude",
"minUpvotes": 10
}

Common pitfall: each emitted row is charged twice in this Actor's own billing flow — once via Actor.push_data(item, charged_event_name="row_result") and again via a separate Actor.charge(event_name="result-item", count=1) call in sink(). Check your run's cost breakdown for both row_result and result-item events rather than assuming a single charge per row.

🔽 Output sample

Output is one JSON row per question, answer, profile, topic, or space, pushed to the run's default dataset.

{
"content_type": "answer",
"title": "What is Python primarily used for?",
"answer_text": "Python is widely used for web development, data science, automation...",
"answer_url": "https://www.quora.com/What-is-Python-primarily-used-for/answer/...",
"author_name": "Jane Doe",
"author_credentials": "Software Engineer, 10+ years",
"upvotes": 342,
"comments_count": 18,
"shares_count": 12,
"answer_timestamp": "3y",
"answer_created_at": "2023-07-15T12:51:39+00:00",
"is_ai_answer": false,
"qualityScore": 78.4,
"aiSentiment": null,
"aiTopics": null,
"question_title": "What is Python primarily used for?",
"scrape_timestamp": "2026-07-26T09:00:00+00:00"
}

How do you filter and target specific answers?

AI-vs-human is the primary quality lever. filterAiAnswers: "exclude" (the default) is the right setting for genuine expert-opinion research; switch to "only" specifically when you're studying Quora's bot-answer behavior rather than trying to avoid it.

Combine upvotes and length for substance, not just popularity. minUpvotes alone can still surface short, low-effort answers that happen to be old and highly-upvoted; pairing it with minAnswerLength filters for answers that are both community-endorsed and substantive.

Turn off answer scraping for structure-only runs. scrapeAnswers: false returns just question metadata (title, answer count, follower count, topics) — much faster and cheaper when you only need to map a topic's question landscape before deciding which questions deserve a full answer scrape.

Three real examples:

{ "searchQueries": ["career advice"], "filterAiAnswers": "exclude", "minUpvotes": 20, "minAnswerLength": 300 }

High-bar human-answer research: substantive, community-endorsed, non-bot.

{ "directUrls": ["https://www.quora.com/some-question"], "filterAiAnswers": "only" }

Isolate Quora's AI-bot answers on a specific question for bot-content auditing.

{ "searchQueries": ["startup funding"], "scrapeAnswers": false, "maxResults": 100 }

Fast, cheap question-landscape mapping without full answer text.

▶️ Want to try other scrapers?

ScraperWhat it extracts
Quora Search Scraper — Fresh Trending Question MonitorNewly-trending Quora questions
Reddit Posts Scraper with Author Media DetailsPost threads with author and media data
Ahrefs Scraper — Competitor ComparisonBacklink and keyword competitor comparison
Google Search Autocomplete APIKeyword suggestion expansion

How to extract Quora data programmatically

This Actor runs as a standard Apify Actor call — one API call in, structured JSON dataset out, using your Apify API token.

Python example

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("<YOUR_USERNAME>/quora-scraper-with-human-answer-quality-score").call(run_input={
"searchQueries": ["machine learning careers"],
"filterAiAnswers": "exclude",
"minUpvotes": 10,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item.get("content_type") == "answer":
print(item["author_name"], item["qualityScore"], item["upvotes"])

Export to spreadsheets or CRM

Every dataset supports one-click CSV/Excel export from the Apify Console, plus dedicated dataset views (quality, questions, answers, profiles, topics, spaces) for exporting one content type at a time.

Scraping publicly visible Quora questions, answers, and profiles is generally lawful, since this data is published for anyone to view without logging in — the underlying legal question was tested directly in hiQ Labs v. LinkedIn (9th Cir.), which held that scraping public, non-password-protected data does not violate the U.S. Computer Fraud and Abuse Act. Author names and profile bios can constitute personal data under GDPR/CCPA when tied to an identifiable individual, so treat that subset accordingly if you store or reuse it at scale, and consult legal counsel for commercial applications.

❓ FAQ

Is the quality score a Quora metric or something this Actor computes?

It's computed entirely by this Actor — Quora doesn't publish a quality score. compute_quality_score() blends upvotes, answer length, and freshness into a reproducible 0-100 number using fields already present on the answer payload, documented with exact weights (0.5/0.3/0.2) in the source.

How does the Actor tell a human answer from an AI one?

It reads Quora's own isMachineAnswer flag on the answer payload — this Actor doesn't guess or infer it from the text itself.

Do I need an AI API key to use this Actor?

No — the deterministic qualityScore always runs with zero extra cost or configuration. An API key is only needed if you turn on aiEnhancement for optional LLM-graded sentiment and topic tags.

filterAiAnswers, minUpvotes, and minAnswerLength are all post-filters applied to the answer stream — an answer that doesn't clear your thresholds is dropped before it's charged, so a lower "kept" count than expected usually means your filters are working as intended, not that the scrape failed.

Am I charged once or twice per row?

Per the source, each pushed row triggers two separate charging calls: Actor.push_data(..., charged_event_name="row_result") and a follow-up Actor.charge(event_name="result-item", count=1). Check both event types in your run's cost breakdown.

What happens if Quora's GraphQL endpoint blocks the request?

The Actor detects a Cloudflare challenge response and automatically switches to running the same GraphQL query from inside a real headless browser page, which already carries the solved Cloudflare cookie — this happens transparently mid-run.

How does this compare to other Quora scrapers?

As observed on the Apify Store on 2026-07-26, memo23/Quora-Scraper-with-optional-login and botflowtech/quora-scraper-pro both scrape Quora content but neither documents a deterministic answer-quality score or an AI-vs-human answer filter — those are specific to this Actor.

Does this work with AI agent frameworks?

Yes — call it as a standard HTTP endpoint via the Apify API from any agent framework capable of making an API call; there's no MCP-specific integration for this Actor.

Conclusion

Quora Scraper With Human Answer Quality Score turns a Quora search into structured, quality-ranked Q&A data — a transparent scoring formula, a real AI-vs-human filter, and optional LLM enrichment layered on top. It fits content research, community auditing, and market research that needs genuine, substantive answers rather than unfiltered noise. Start a run from the Apify Console or the Apify API with your target keywords or URLs to get your first quality-scored export.