{
  "data": {
    "id": "yJ2UZKFwANg4ScxlV",
    "actId": "uAivkcIOWnHGsAnKT",
    "userId": "IYgBDiXtHOijAaUel",
    "startedAt": "2026-10-29T06:56:52.092Z",
    "finishedAt": "2026-10-29T06:57:28.802Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 36529,
      "runTimeSecs": 36.529,
      "computeUnits": 0.04058777777777778,
      "imageSizeBytes": 3143940096
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "QYo53EZkJk0prePWY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Quora Dataset Builder Input\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"auto\",\n        \"byQuestionUrls\",\n        \"byAnswerUrls\",\n        \"byProfileUrls\",\n        \"byTopicUrls\",\n        \"bySpaceUrls\",\n        \"byPostUrls\",\n        \"search\"\n      ],\n      \"enumTitles\": [\n        \"Auto-detect any supported URL\",\n        \"Questions and answers\",\n        \"Specific answer permalinks\",\n        \"Profiles and stats\",\n        \"Topics and optional feed\",\n        \"Spaces and feeds\",\n        \"Standalone posts\",\n        \"Best-effort search discovery\"\n      ],\n      \"default\": \"auto\",\n      \"prefill\": \"auto\",\n      \"description\": \"Optional dispatcher. auto detects every supported Quora route; typed modes validate startUrls against that route. Typed seed lists still work without mode.\"\n    },\n    \"scrapeDepth\": {\n      \"title\": \"Scrape Depth\",\n      \"type\": \"string\",\n      \"enum\": [\n        \"overview\",\n        \"detail\"\n      ],\n      \"enumTitles\": [\n        \"Overview (page metadata only)\",\n        \"Detail (answers, comments, feeds)\"\n      ],\n      \"default\": \"detail\",\n      \"prefill\": \"detail\",\n      \"description\": \"Overview emits page metadata without answer/comment/feed expansion; detail enables SSR answers plus bounded GraphQL pagination and optional comments/topic feeds.\"\n    },\n    \"startUrls\": {\n      \"title\": \"Quora URLs\",\n      \"type\": \"array\",\n      \"editor\": \"requestListSources\",\n      \"description\": \"Question, answer, profile, topic, Space, or search URLs. Mixed lists are auto-detected; invalid hosts become status rows instead of failing the run.\",\n      \"default\": [],\n      \"prefill\": [\n        {\n          \"url\": \"https://www.quora.com/What-is-the-meaning-of-life\"\n        }\n      ]\n    },\n    \"searchQueries\": {\n      \"title\": \"Search Queries\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"description\": \"Best-effort public-index discovery only. Quora native search is login/Cloudflare-gated and robots-disallowed; related-question expansion on a question URL is the reliable discovery axis.\"\n    },\n    \"questionUrls\": {\n      \"title\": \"Question URLs\",\n      \"type\": \"array\",\n      \"editor\": \"requestListSources\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"url\": {\n            \"title\": \"URL\",\n            \"description\": \"A Quora URL.\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"url\"\n        ]\n      },\n      \"default\": [],\n      \"description\": \"Explicit question-page seeds. Only question routes are accepted.\"\n    },\n    \"answerUrls\": {\n      \"title\": \"Answer URLs\",\n      \"type\": \"array\",\n      \"editor\": \"requestListSources\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"url\": {\n            \"title\": \"URL\",\n            \"description\": \"A Quora URL.\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"url\"\n        ]\n      },\n      \"default\": [],\n      \"description\": \"Explicit answer-page seeds. Parent question joins are emitted only from observed evidence.\"\n    },\n    \"topicUrls\": {\n      \"title\": \"Topic URLs\",\n      \"type\": \"array\",\n      \"editor\": \"requestListSources\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"url\": {\n            \"title\": \"URL\",\n            \"description\": \"A Quora URL.\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"url\"\n        ]\n      },\n      \"default\": [],\n      \"description\": \"Explicit Topic-page seeds for bounded visible question discovery.\"\n    },\n    \"spaceUrls\": {\n      \"title\": \"Space URLs\",\n      \"type\": \"array\",\n      \"editor\": \"requestListSources\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"url\": {\n            \"title\": \"URL\",\n            \"description\": \"A Quora URL.\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"url\"\n        ]\n      },\n      \"default\": [],\n      \"description\": \"Explicit Space-page seeds for bounded visible feed discovery.\"\n    },\n    \"profileUrls\": {\n      \"title\": \"Profile URLs\",\n      \"type\": \"array\",\n      \"editor\": \"requestListSources\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"url\": {\n            \"title\": \"URL\",\n            \"description\": \"A Quora URL.\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"url\"\n        ]\n      },\n      \"default\": [],\n      \"description\": \"Explicit profile-page seeds. Only profile routes are accepted; emitted as normalized profile rows exactly like a profile route discovered from startUrls.\"\n    },\n    \"postUrls\": {\n      \"title\": \"Post URLs\",\n      \"type\": \"array\",\n      \"editor\": \"requestListSources\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"url\": {\n            \"title\": \"URL\",\n            \"description\": \"A Quora URL.\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"url\"\n        ]\n      },\n      \"default\": [],\n      \"description\": \"Explicit standalone Post-page seeds. Only post routes are accepted; emitted with the same topic_post field family topic-discovered posts use (post_title, post_body, post_author_*).\"\n    },\n    \"resultTypes\": {\n      \"title\": \"Result Types\",\n      \"type\": \"array\",\n      \"description\": \"Select normalized entities, explicit graph relationships, relationship-collection counts, status rows, and the final run manifest.\",\n      \"editor\": \"select\",\n      \"items\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"question\",\n          \"answer\",\n          \"comment\",\n          \"profile\",\n          \"profile_activity\",\n          \"topic\",\n          \"topic_post\",\n          \"space\",\n          \"space_feed_item\",\n          \"entity_edge\",\n          \"relationship_collection\",\n          \"status\",\n          \"run_manifest\"\n        ]\n      },\n      \"default\": [\n        \"question\",\n        \"answer\",\n        \"comment\",\n        \"profile\",\n        \"profile_activity\",\n        \"topic\",\n        \"topic_post\",\n        \"space\",\n        \"space_feed_item\",\n        \"entity_edge\",\n        \"status\",\n        \"run_manifest\"\n      ]\n    },\n    \"outputFormat\": {\n      \"title\": \"Output Format\",\n      \"type\": \"string\",\n      \"enum\": [\n        \"normalized\",\n        \"nested\",\n        \"flat\",\n        \"edges\"\n      ],\n      \"enumTitles\": [\n        \"Normalized (one row per entity)\",\n        \"Nested (answers under questions)\",\n        \"Flat (entity rows with parent context)\",\n        \"Edges (relationship rows)\"\n      ],\n      \"default\": \"normalized\",\n      \"prefill\": \"normalized\",\n      \"description\": \"Projection after one canonical extraction path. Nested groups emitted answers and comments under explicit question/answer parents; flat keeps entity rows with parent context; edges emits explicit edge rows plus status rows.\"\n    },\n    \"dedupeMode\": {\n      \"title\": \"Deduplication Mode\",\n      \"type\": \"string\",\n      \"enum\": [\n        \"canonical\",\n        \"none\"\n      ],\n      \"enumTitles\": [\n        \"Canonical (deduplicate by ID/URL)\",\n        \"None (keep every observed row)\"\n      ],\n      \"default\": \"canonical\",\n      \"prefill\": \"canonical\",\n      \"description\": \"canonical suppresses overlapping entity rows by stable ID or canonical URL (default); none preserves every observed non-status row. The run manifest reports duplicate_records_suppressed.\"\n    },\n    \"onlyNewItems\": {\n      \"title\": \"Only New or Changed Items\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Annotate canonical entity rows with new/changed/unchanged/scope_mismatch state and suppress only unchanged semantic rows when includeUnchanged is false. Requires stateStoreId; status, graph, and manifest rows remain visible.\"\n    },\n    \"includeUnchanged\": {\n      \"title\": \"Include Unchanged Items\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Retain unchanged semantic entities when incremental state is enabled; output projection does not alter comparison hashes.\"\n    },\n    \"stateStoreId\": {\n      \"title\": \"Incremental State Store ID\",\n      \"type\": \"string\",\n      \"editor\": \"textfield\",\n      \"default\": \"\",\n      \"description\": \"Apify key-value store for canonical entity snapshots. Required when onlyNewItems is enabled; never store cookies or credentials here.\"\n    },\n    \"outputFields\": {\n      \"title\": \"Output Fields\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"description\": \"Optional allowlist for compact rows, including bounded dotted paths through nested collections (for example answers.answer_text, comments.comment_text, feed.feed_text, or contributors.contributor_name where applicable). Child identity/URL fields and the actor identity, access/status, source, traversal, graph, filter, and parser-envelope fields remain protected.\",\n      \"maxItems\": 3000\n    },\n    \"includeFieldEvidence\": {\n      \"title\": \"Include Field Evidence\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Include field_sources and fields_present maps. Disable only when a smaller payload is required; semantic values and protected access fields remain unchanged.\"\n    },\n    \"includeUnresolvedEdges\": {\n      \"title\": \"Include Unresolved Edges\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Retain relationship rows whose endpoint URL was not explicitly observed, with unresolved_reason. Disabling this suppresses only those edge rows and does not imply complete relationships.\"\n    },\n    \"relationshipTypes\": {\n      \"title\": \"Relationship Types\",\n      \"type\": \"array\",\n      \"editor\": \"select\",\n      \"items\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"profile_follows_profile\",\n          \"profile_followed_by_profile\",\n          \"profile_follows_question\",\n          \"profile_follows_space\",\n          \"profile_follows_topic\",\n          \"profile_has_expertise\",\n          \"question_followed_by_profile\",\n          \"question_wants_answers_from_profile\",\n          \"answer_upvoted_by_profile\",\n          \"space_followed_by_profile\",\n          \"space_has_contributor\",\n          \"space_has_moderator\",\n          \"space_has_admin\",\n          \"space_contains_post\",\n          \"space_contains_question\",\n          \"space_contains_unanswered_question\",\n          \"profile_authored_answer\",\n          \"profile_authored_question\",\n          \"profile_authored_post\",\n          \"question_has_topic\",\n          \"question_has_answer\",\n          \"answer_belongs_to_question\",\n          \"answer_authored_by_profile\",\n          \"comment_belongs_to_answer\",\n          \"comment_reply_to_comment\",\n          \"comment_authored_by_profile\",\n          \"post_authored_by_profile\",\n          \"post_in_space\",\n          \"profile_has_activity\",\n          \"space_has_feed_item\"\n        ]\n      },\n      \"default\": [],\n      \"description\": \"Explicit relationship-type allowlist for the newly ported follower/following/want-answers/upvoter/space-role relationship collections. Empty leaves the existing always-on content-membership/authorship edges untouched (question_has_topic, answer_authored_by, comment_belongs_to_answer, profile_has_activity, space_has_feed_item, etc.); this allowlist only gates the additional collections below. Sensitive follower/want-answer/upvoter types also require includeSensitiveRelationshipData and their matching collection opt-in.\"\n    },\n    \"includeProfileEdges\": {\n      \"title\": \"Include Profile Relationship Collections\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Enable explicitly labeled profile follower/following/followed-question/Space/Topic relationship collections. This does not prove a complete list.\"\n    },\n    \"includeQuestionFollowerEdges\": {\n      \"title\": \"Include Question Follower Collections\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Enable explicitly labeled question follower or want-answer collections. Sensitive identity rows also require the privacy gate.\"\n    },\n    \"includeAnswerUpvoterEdges\": {\n      \"title\": \"Include Answer Upvoter Collections\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"High-sensitivity opt-in for explicitly labeled answer upvoter identities; requires includeSensitiveRelationshipData=true.\"\n    },\n    \"includeSensitiveRelationshipData\": {\n      \"title\": \"Sensitive Relationship Data\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Explicit privacy gate required for follower, want-answer, and upvoter identity edges.\"\n    },\n    \"includeTargetMetadata\": {\n      \"title\": \"Include Explicit Target Metadata\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Retain explicitly visible target link text and image (to_name, to_image_url) on relationship edges. URLs remain evidence; no target navigation or recursive target scraping is performed.\"\n    },\n    \"includeRelationshipCounts\": {\n      \"title\": \"Include Relationship Collection Counts\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Emit privacy-preserving relationship_collection rows with the real observed total (collection_total_text/collection_total_value) but no target identities. Requires relationship_collection in resultTypes. Observed totals are not always a server-confirmed count.\"\n    },\n    \"includeSpaceRoleEdges\": {\n      \"title\": \"Include Space Role Edges\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Enable explicitly labeled Space contributor, moderator, and admin collections.\"\n    },\n    \"includeSpaceContentEdges\": {\n      \"title\": \"Include Space Content Edges\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Retain bounded explicit Space post/question membership edges; this never claims a complete Space inventory.\"\n    },\n    \"maxRelationshipItemsPerCollection\": {\n      \"title\": \"Maximum Relationship Items per Collection\",\n      \"type\": \"integer\",\n      \"default\": 500,\n      \"minimum\": 0,\n      \"maximum\": 5000,\n      \"description\": \"Bound explicit links emitted from each labeled relationship collection. Zero emits no relationship-collection edges and never means an empty collection.\"\n    },\n    \"maxQuestions\": {\n      \"title\": \"Maximum Questions\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum question seeds or discovered question pages to process.\",\n      \"default\": 25,\n      \"minimum\": 0,\n      \"maximum\": 1000,\n      \"prefill\": 10\n    },\n    \"maxAnswersPerQuestion\": {\n      \"title\": \"Maximum Answers per Question\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum answer rows retained per question after SSR and GraphQL pagination.\",\n      \"default\": 10,\n      \"minimum\": 0,\n      \"maximum\": 500,\n      \"prefill\": 5\n    },\n    \"maxAnswers\": {\n      \"title\": \"Maximum Answers Total\",\n      \"type\": \"integer\",\n      \"default\": 0,\n      \"minimum\": 0,\n      \"maximum\": 50000,\n      \"description\": \"Global answer-row cap applied after per-question caps. Zero means no configured global answer cap.\"\n    },\n    \"includeQuestion\": {\n      \"title\": \"Include Question Rows\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Retain normalized question parent rows when selected in resultTypes.\"\n    },\n    \"includeAuthor\": {\n      \"title\": \"Include Author Rows\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Retain visible author fields and profile/profile-activity rows. When false, author fields and author rows are removed from the emitted shape; no contact enrichment is performed.\"\n    },\n    \"includeAuthorSnapshot\": {\n      \"title\": \"Include Author Snapshot\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Opt into bounded public profile snapshots for visible author profile links; profile access/status is separate from answer/comment success and never includes contact enrichment.\"\n    },\n    \"includeTopics\": {\n      \"title\": \"Include Topic Links\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Retain explicit topic links and topic relationships where observed.\"\n    },\n    \"includeSpaces\": {\n      \"title\": \"Include Space Rows\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Retain Space rows and SSR feed items. Explicit spaceUrls enable this automatically.\"\n    },\n    \"includeComments\": {\n      \"title\": \"Include Comment Rows\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Opt-in comment rows from Quora's public comment-area GraphQL. robots-sensitive; off by default. When enabled and maxCommentsPerAnswer is 0, the documented fallback is 10 per answer.\"\n    },\n    \"includeEngagementBreakdown\": {\n      \"title\": \"Include Engagement Breakdown\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Retain explicitly labeled per-comment reaction breakdowns alongside aggregate reaction labels. Raw labels are preserved and typed companions are added only when the localized number is unambiguous.\"\n    },\n    \"includeRelatedContent\": {\n      \"title\": \"Include Answer Related Content\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Retain links inside an explicitly labeled related/attached region scoped to answer cards; unlabeled navigation and neighboring regions are excluded.\"\n    },\n    \"maxRelatedContent\": {\n      \"title\": \"Maximum Answer Related Content\",\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 100,\n      \"default\": 20,\n      \"description\": \"Bound eligible related-content links per answer when enabled; zero emits no related-content items.\"\n    },\n    \"topCommentsOnly\": {\n      \"title\": \"Top-Labeled Comments Only\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Retain only comments with an explicit visible Top/Most helpful/Popular comments label. Unknown comments are excluded and counted; votes and position are not used as top evidence.\"\n    },\n    \"commentSortOrder\": {\n      \"title\": \"Comment Sort Order\",\n      \"type\": \"string\",\n      \"enum\": [\n        \"observed\",\n        \"upvotes_desc\",\n        \"reactions_desc\",\n        \"replies_desc\",\n        \"newest\"\n      ],\n      \"enumTitles\": [\n        \"Observed order\",\n        \"Most upvotes\",\n        \"Most reactions\",\n        \"Most replies\",\n        \"Newest first\"\n      ],\n      \"default\": \"observed\",\n      \"description\": \"Order builder comment rows by observed order or an explicitly typed metric/timestamp. Unknown selected metrics remain in stable fallback order and are counted.\"\n    },\n    \"includeReplyGraph\": {\n      \"title\": \"Include Reply Graph\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Enable comment rows plus one-level nested reply extraction from repliesConnection. Requires includeComments.\"\n    },\n    \"includeMedia\": {\n      \"title\": \"Include Media URLs\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Request explicitly rendered media URL fields scoped to question roots, answer/comment nodes, and Topic post cards where the page exposes them.\"\n    },\n    \"includeFeedText\": {\n      \"title\": \"Include Space Feed Text\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Request bounded visible text from explicitly linked Space feed cards; page-level text and complete feed history are excluded.\"\n    },\n    \"includeOutboundLinks\": {\n      \"title\": \"Include Outbound Links\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Request visible non-Quora links scoped to question roots, answer/comment nodes, and Topic post cards; Quora links, comment permalinks, and links outside the owning scope are excluded.\"\n    },\n    \"includeEntityGraph\": {\n      \"title\": \"Include Entity Graph\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Emit explicit relationship rows even when entity_edge is not listed in resultTypes.\"\n    },\n    \"maxCommentsPerAnswer\": {\n      \"title\": \"Maximum Comments per Answer\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum comment rows retained per answer when comments are enabled. Schema default 0 is kept for compatibility; comments-enabled runs treat 0 as 10.\",\n      \"default\": 0,\n      \"minimum\": 0,\n      \"maximum\": 500,\n      \"prefill\": 0\n    },\n    \"maxCommentDepth\": {\n      \"title\": \"Maximum Comment Depth\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum nested reply depth when includeCommentReplies/includeReplyGraph is enabled.\",\n      \"default\": 20,\n      \"minimum\": 0,\n      \"maximum\": 100,\n      \"prefill\": 20\n    },\n    \"maxItems\": {\n      \"title\": \"Maximum Entity Rows\",\n      \"type\": \"integer\",\n      \"default\": 0,\n      \"minimum\": 0,\n      \"maximum\": 5000,\n      \"description\": \"Cap for normalized entity/status rows before graph and manifest rows.\"\n    },\n    \"maxGraphEdges\": {\n      \"title\": \"Maximum Graph Edges\",\n      \"type\": \"integer\",\n      \"description\": \"Independent cap for deterministic entity_edge rows.\",\n      \"default\": 5000,\n      \"minimum\": 0,\n      \"maximum\": 50000,\n      \"prefill\": 1000\n    },\n    \"maxScrollAttempts\": {\n      \"title\": \"Maximum Scroll Attempts\",\n      \"type\": \"integer\",\n      \"description\": \"Bounded lazy-render scroll budget applied during detail traversal; scroll attempts and termination state are reported.\",\n      \"default\": 5,\n      \"minimum\": 0,\n      \"maximum\": 20\n    },\n    \"maxLoadMoreAttempts\": {\n      \"title\": \"Maximum Load-more Attempts\",\n      \"type\": \"integer\",\n      \"description\": \"Bound exact visible continuation-control clicks on direct question, answer, topic, and Space collection pages independently from scrolling. Search seeds fan out through their discovered child URLs and retain their own source accounting.\",\n      \"default\": 0,\n      \"minimum\": 0,\n      \"maximum\": 20\n    },\n    \"includeRawEvidence\": {\n      \"title\": \"Include Raw Evidence\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Add bounded document hash and optional HTML bytes to each page-level entity row.\"\n    },\n    \"includeHtml\": {\n      \"title\": \"Include HTML\",\n      \"type\": \"boolean\",\n      \"description\": \"Include bounded raw-document HTML when raw evidence is enabled and bounded answer-card HTML when answer cards are extracted.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxHtmlBytes\": {\n      \"title\": \"Maximum HTML Bytes\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum UTF-8 bytes retained for optional raw HTML evidence.\",\n      \"default\": 100000,\n      \"minimum\": 1000,\n      \"maximum\": 2000000\n    },\n    \"requestDelay\": {\n      \"title\": \"Request Delay\",\n      \"type\": \"number\",\n      \"description\": \"Delay between page batches in seconds; this is not an anti-bot bypass guarantee.\",\n      \"default\": 1,\n      \"minimum\": 0,\n      \"maximum\": 30\n    },\n    \"maxConcurrency\": {\n      \"title\": \"Maximum Concurrent Seeds\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum independent seed pages processed concurrently in deterministic batches. Each seed owns a page; discovered seeds merge in batch order.\",\n      \"default\": 1,\n      \"minimum\": 1,\n      \"maximum\": 3\n    },\n    \"maxNavigationRetries\": {\n      \"title\": \"Maximum Navigation Retries\",\n      \"type\": \"integer\",\n      \"default\": 2,\n      \"minimum\": 0,\n      \"maximum\": 3,\n      \"description\": \"Bounded retries after navigation exceptions (e.g. a transient proxy-tunnel handshake failure); exponential backoff is reported in navigation_retry_delays_seconds. Defaults to 2 for reliability.\"\n    },\n    \"language\": {\n      \"title\": \"Language\",\n      \"type\": \"string\",\n      \"description\": \"Browser language hint. Short language codes and supported regional aliases are accepted and normalize to the short code; auto keeps the actor default. This does not translate content or prove access.\",\n      \"enum\": [\n        \"auto\",\n        \"en\",\n        \"es\",\n        \"fr\",\n        \"de\",\n        \"pt\",\n        \"it\",\n        \"ja\",\n        \"ko\",\n        \"hi\",\n        \"id\",\n        \"nl\",\n        \"pl\",\n        \"tr\",\n        \"vi\",\n        \"zh\",\n        \"ru\",\n        \"en-US\",\n        \"en-GB\",\n        \"de-DE\",\n        \"fr-FR\",\n        \"es-ES\",\n        \"pt-BR\",\n        \"it-IT\",\n        \"ja-JP\",\n        \"ko-KR\",\n        \"hi-IN\",\n        \"tr-TR\",\n        \"zh-CN\",\n        \"zh-TW\",\n        \"ru-RU\"\n      ],\n      \"enumTitles\": [\n        \"Automatic\",\n        \"English\",\n        \"Spanish\",\n        \"French\",\n        \"German\",\n        \"Portuguese\",\n        \"Italian\",\n        \"Japanese\",\n        \"Korean\",\n        \"Hindi\",\n        \"Indonesian\",\n        \"Dutch\",\n        \"Polish\",\n        \"Turkish\",\n        \"Vietnamese\",\n        \"Chinese\",\n        \"Russian\",\n        \"English (US)\",\n        \"English (UK)\",\n        \"German (Germany)\",\n        \"French (France)\",\n        \"Spanish (Spain)\",\n        \"Portuguese (Brazil)\",\n        \"Italian (Italy)\",\n        \"Japanese (Japan)\",\n        \"Korean (Korea)\",\n        \"Hindi (India)\",\n        \"Turkish (Turkey)\",\n        \"Chinese (Simplified)\",\n        \"Chinese (Traditional)\",\n        \"Russian (Russia)\"\n      ],\n      \"default\": \"auto\"\n    },\n    \"proxyConfiguration\": {\n      \"title\": \"Proxy Configuration (optional)\",\n      \"type\": \"object\",\n      \"description\": \"Optional proxy override. The actor starts with a direct connection, retries a fresh session on 403/429, then uses Apify AUTO datacenter proxies, and only falls back to RESIDENTIAL as a proven last resort. Leave this unset; a missing proxyConfiguration never stops the run.\",\n      \"editor\": \"proxy\"\n    },\n    \"redactSensitiveQueryParams\": {\n      \"title\": \"Redact Sensitive URL Query Values\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Redact narrow credential-like query parameter values in emitted URLs, graph endpoints, redirect chains, and raw HTML. The original document hash remains based on the captured document.\"\n    },\n    \"rawEvidenceRetentionDays\": {\n      \"title\": \"Raw Evidence Retention Days\",\n      \"type\": \"integer\",\n      \"default\": 30,\n      \"minimum\": 0,\n      \"maximum\": 30,\n      \"description\": \"When zero, suppress raw_html snapshots while retaining hash, size, and redaction diagnostics. Positive values permit bounded HTML for the requested run; external Apify dataset/run retention still applies.\"\n    },\n    \"maxRawEvidenceBytes\": {\n      \"title\": \"Maximum Raw Evidence Bytes\",\n      \"type\": \"integer\",\n      \"default\": 100000,\n      \"minimum\": 1000,\n      \"maximum\": 2000000,\n      \"description\": \"Hard upper byte cap for returned raw HTML after the maxHtmlBytes cap.\"\n    },\n    \"maxItemsPerSource\": {\n      \"title\": \"Maximum Items Per Source\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum semantic records emitted from each direct URL, query, or typed source. Status and run-manifest rows are preserved. Use 0 for no per-source cap.\",\n      \"default\": 0,\n      \"minimum\": 0,\n      \"maximum\": 5000,\n      \"prefill\": 0\n    },\n    \"searchDiscovery\": {\n      \"title\": \"Search Discovery\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"relatedOnly\",\n        \"bestEffortIndex\",\n        \"off\"\n      ],\n      \"enumTitles\": [\n        \"Related questions only (no third-party engine)\",\n        \"Best-effort DuckDuckGo index\",\n        \"Disabled\"\n      ],\n      \"default\": \"relatedOnly\",\n      \"prefill\": \"relatedOnly\",\n      \"description\": \"How searchQueries are handled. relatedOnly attempts Quora's public search and otherwise emits search_unavailable; bestEffortIndex queries a public web index for indexed Quora URLs. Native Quora search is never claimed.\"\n    },\n    \"maxRelatedQuestions\": {\n      \"title\": \"Maximum Related Questions\",\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 100,\n      \"default\": 20,\n      \"prefill\": 0,\n      \"description\": \"Related questions to enqueue per question/topic seed. The page usually exposes 26-35; zero disables related-question discovery.\"\n    },\n    \"searchResultsPerQuery\": {\n      \"title\": \"Search Results per Query\",\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 50,\n      \"default\": 10,\n      \"prefill\": 0,\n      \"description\": \"Maximum indexed URLs to use per search query when searchDiscovery=bestEffortIndex.\"\n    },\n    \"maxAnswerPages\": {\n      \"title\": \"Maximum Answer GraphQL Pages\",\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 50,\n      \"default\": 0,\n      \"prefill\": 0,\n      \"description\": \"Bound QuestionPagedListPaginationQuery pages. Zero derives a bound from maxAnswersPerQuestion.\"\n    },\n    \"maxTopicFeedPages\": {\n      \"title\": \"Maximum Topic Feed Pages\",\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 20,\n      \"default\": 3,\n      \"prefill\": 0,\n      \"description\": \"Bound topic-feed GraphQL pages when includeTopicFeed is enabled.\"\n    },\n    \"maxSpaceFeedBundles\": {\n      \"title\": \"Maximum Space Feed Bundles\",\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 20,\n      \"default\": 4,\n      \"prefill\": 1,\n      \"description\": \"Bound Space feed bundles read from the SSR multifeed.\"\n    },\n    \"includeCommentReplies\": {\n      \"title\": \"Include Comment Replies\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Include nested repliesConnection rows. Requires includeComments. Comments are robots-sensitive and opt-in; zero-row/blocked results produce a status row.\"\n    },\n    \"includeQuoraPlusPreview\": {\n      \"title\": \"Include Quora+ Preview Answers\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Emit preview-only answers flagged answer_is_quora_plus/answer_text_completeness=preview. The gated remainder is never fetched or presented as full text.\"\n    },\n    \"includeProfileStats\": {\n      \"title\": \"Include Profile Stats\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Emit follower/following/answer/question/post/view counts, joined date, credentials and expertise topics for profile rows.\"\n    },\n    \"includeTopicStats\": {\n      \"title\": \"Include Topic Stats\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Emit topic follower count and most-viewed authors for topic rows.\"\n    },\n    \"includeSpaceStats\": {\n      \"title\": \"Include Space Stats\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Emit Space follower/member/contributor/moderator/admin counts, description, icon and cover.\"\n    },\n    \"includePostStats\": {\n      \"title\": \"Include Post Stats\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Emit post upvotes/views/shares/comments, effective access and question-summary flag.\"\n    },\n    \"includeAnswerStats\": {\n      \"title\": \"Include Answer Stats\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true,\n      \"description\": \"Emit answer counters, dates, AI flag, effective access and Quora+ preview flags.\"\n    },\n    \"includeTopicFeed\": {\n      \"title\": \"Include Topic Feed\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Opt into the browser topic-feed GraphQL endpoint. robots-sensitive: keep off unless you accept that compliance caveat.\"\n    },\n    \"includeQuestionAudit\": {\n      \"title\": \"Include Question Audit\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Opt into the public question /log page to fill question_created_at, question_view_count and the asker fields. robots.txt disallows /*/log for generic agents; the actor never includes this in the default prefill.\"\n    },\n    \"includeProfileHistory\": {\n      \"title\": \"Include Profile History\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false,\n      \"description\": \"Opt into the public profile answer/question tab GraphQL and emit bounded profile_activity rows. robots-sensitive and rate-sensitive; on a 400/403 the run keeps a profile_history_unavailable status row.\"\n    },\n    \"maxProfileHistoryPages\": {\n      \"title\": \"Maximum Profile History Pages\",\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 20,\n      \"default\": 0,\n      \"prefill\": 0,\n      \"description\": \"Bound for each profile history list (answers and questions) when includeProfileHistory is enabled. Zero derives three pages; one page is roughly ten items.\"\n    },\n    \"maxRelationshipPages\": {\n      \"title\": \"Maximum Identity List Pages\",\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 20,\n      \"default\": 3,\n      \"prefill\": 0,\n      \"description\": \"Bound for each public identity-list query (question followers, answer upvoters, profile followers/following, Space roles) after the relationship allowlist and privacy gates. Zero is treated as one page.\"\n    }\n  }\n}",
    "readme": "# Quora Question, Answer & Relationship Dataset Builder\n\nBuild a structured Quora dataset from direct links or best-effort search discovery. Point it at question, answer, profile, Topic, Space, or Post URLs and it returns normalized rows for every entity it finds, with the question → answer → comment chain and author/topic links kept intact. Choose how deep to go, how the rows are shaped, and which relationship or feed data to include.\n\nThis is an independent, third-party actor. It is not affiliated with, endorsed by, or licensed by Quora, Inc. No Quora account, login, session cookie, or paid proxy is used or required.\n\n## What this actor does\n\n- Accepts question, answer, profile, Topic, Space, and Post URLs directly, plus best-effort search discovery. Typed seed lists (`questionUrls`, `answerUrls`, `topicUrls`, `spaceUrls`, `profileUrls`, `postUrls`) override route auto-detection.\n- Empty fields are omitted; a missing field means the source did not expose it, never `null` or a sentinel.\n- Parses Quora's server-rendered Relay payloads and double-decodes the `window.ansFrontendGlobals.data.inlineQueryResults` `.push()` strings; it does not depend on CSS classes or DOM selectors for the core fields.\n- Paginates question answers with Quora's public `QuestionPagedListPaginationQuery` cursor, up to `maxAnswersPerQuestion` / `maxAnswers` / `maxAnswerPages`. Every paginated answer is checked against the page question (title/path, `linkedQuestion`, `originalQuestionIfDifferent`, and the answer permalink), so unrelated promoted answers cannot become dataset rows while legitimate merged variants still pass.\n- Paginates comment areas and nested replies through `AllCommentsListQuery` (10+ pages with `after` cursors), with `maxCommentsPerAnswer` as the hard cap; this is opt-in and robots-sensitive.\n- Optionally reads a Topic feed, a Space SSR multifeed, profile statistics, Topic statistics, and Post metrics.\n- Optionally reads the public question `/log` audit for created time, view count, and asker identity (`includeQuestionAudit`), and paginates profile answer/question history (`includeProfileHistory`).\n- Optionally resolves public identity lists for question followers, answer upvoters, profile followers/following, and Space roles through explicitly requested relationship types and the sensitive-data gate.\n- Walks the question → answer → comment chain and keeps the links between them (`entity_edge` rows), so you can rebuild the conversation tree.\n- Offers four output shapes via `outputFormat`: `normalized` (separate rows per entity, default), `nested` (answers grouped under their question, comments under their answer), `flat`, and `edges` (relationship rows plus any status rows).\n- Reports a `status` row (rather than guessing) whenever a page is blocked, login-gated, removed, or otherwise inaccessible, and a `run_manifest` row summarizing the whole run.\n- Leaves empty content fields out of each row rather than filling them with a guess. `0` and `false` are kept as real values.\n- Never emits cookie/credential material. URLs are redacted when `redactSensitiveQueryParams` is on.\n\n## Output per record\n\nEvery row carries `content_type` (`question`, `answer`, `comment`, `profile`, `profile_activity`, `topic`, `topic_post`, `space`, `space_feed_item`, `entity_edge`, `relationship_collection`, `status`, or `run_manifest`), plus shared fields: `record_id`, `title`, `url`, `canonical_url`, `source_url`, `access_state`, `scrape_timestamp`, `requested_depth`, `observed_depth`, `detail_expansion_state`, `output_format`, `matched_input`, `matched_input_kind`, and (when search seeds were used) `source_query`/`source_queries`.\n\nEvery row also carries run-context fields describing how it was collected: `source_observations`/`source_observation_count`, `redirect_chain`, `url_redaction_state`/`url_redactions`, `proxy_used`, `proxy_path_used`, `proxy_resolution_state`, `session_cookie_count`, `session_input_state`, `session_cookie_expiry_state`, `request_delay_seconds`, `browser_locale`, `requested_language`, `navigation_retries`/`navigation_retry_delays_seconds`, `parser_version` and `parser_strategy`. With `includeFieldEvidence` on (default), rows also get `field_sources` (where each value came from) and `fields_present`.\n\n`access_state` is `public` for normal pages. Other values include `login_required`, `cloudflare_challenge`, `rate_limited`, `not_found`, `removed`, `unavailable`, `quora_plus_or_gated`, `quora_plus_preview`, `redirected_to_search`, `unsupported_url`, `search_unavailable`, `answer_pagination_limited`, `answer_pagination_unavailable`, `comments_unavailable`, `comments_capped`, `topic_feed_unavailable`, `topic_feed_capped`, `space_feed_capped`, `profile_history_limited`, `profile_history_unavailable`, `question_audit_unavailable`, `relationship_identity_unavailable`, `relationship_identity_capped`, `relationship_identities_not_observed`, `state_store_unavailable`, `state_store_uncommitted` and `network_error`.\n\n**Question row** — `question_url`, `question_id`, `question_answer_count` (label) / `question_answer_count_value` (parsed number) / `question_answer_count_scraped` (rows actually collected), `question_follower_count` / `question_follower_count_value` (when the public payload exposes it), `related_questions` (`qid`, `title`, `url`), `question_created_at`, `question_updated_at`, `question_view_count`, `question_audit_state`, `question_merge_count`, `question_age_days`/`question_age_state`, `last_answered_at` + `last_answered_at_evidence`, `question_author_name`/`_url`/`_image_url`/`_id`/`_is_verified`/`_is_anonymous`/`_credentials` (from a visible author card or the opt-in `/log` audit), `question_image_urls`/`_video_urls`/`_outbound_links` (opt-in), `answer_count`, `answer_limit_reached`, `topics`, `topic_links`.\n\n**Answer row** — `answer_id`, `answer_node_id`, `answer_url`, `answer_text`, `answer_html` (opt-in, derived from rich text), `answer_media_urls`/`_image_urls`/`_video_urls`/`_outbound_links` (opt-in), `answer_translation_state`/`_label`, `answer_original_url`, `answer_is_anonymous`, `answer_author_is_verified`, `answer_author_follower_count` (when present), `answer_created_at`/`_updated_at`, `answer_age_days`/`_state`, `answer_visibility`, `answer_text_completeness`, `answer_is_collapsed`, `answer_is_quora_plus`, `answer_access_option`, `answer_effective_access`, `answer_is_top_labeled`, `answer_rank`/`_rank_source`, `answer_upvote_count`/`_value`, `answer_comment_count`/`_value`, `answer_view_count`/`_value`, `answer_share_count`/`_value`, `reaction_breakdown` (opt-in), `is_ai_answer`/`ai_label_text`/`ai_label_source`, `related_content`/`_count`/`_observed_count`/`_limit_reached` (opt-in), `answer_jsonld_type`, `author_name`/`_url`/`_image_url`/`_id`/`_credentials`.\n\n**Comment row** — `comment_id`, `comment_url`, `comment_text`, `comment_source` (`graphql_comment_area`), `comment_author_name`/`_image_url`/`_id`/`_credentials`/`_is_verified`, `comment_is_anonymous`, `comment_timestamp`/`_created_at`, `comment_age_days`/`_state`, `comment_visibility`, `comment_upvote_count`/`_value`, `comment_reaction_count`/`_value`, `comment_reply_count`/`_value`, `comment_reaction_breakdown`, `comment_media_urls`/`_image_urls`/`_video_urls`/`_outbound_links`, `comment_is_top_labeled`, `comment_rank`/`_rank_source`, `comment_sort_order`, `comment_depth`, `comment_depth_limit_reached`, `comment_is_reply`, `parent_comment_id`/`_url`, `comment_reply_path`, `comment_container_id`, `comment_items_observed_count`/`_emitted_count`, `comment_limit_reached`, `comment_page_limited`.\n\n**Profile row** — `profile_url`, `profile_name`, `profile_bio`, `profile_image_url`, `profile_author_id`, `profile_is_verified`, `profile_is_restricted`, `profile_account_status`, `profile_is_anonymous`, `profile_is_deceased`, `profile_snapshot_state`, plus `profile_follower_count`, `profile_following_count`, `profile_answer_count`, `profile_question_count`, `profile_post_count`, `profile_total_content_views`, `profile_month_content_views`, `profile_joined_at`, `profile_credential`, `profile_work_credentials`, `profile_school_credentials`, `profile_location_credentials`, `profile_expertise_topics`, `profile_history_limited` when the visible feed is truncated or the opt-in history is capped, and `profile_history_state` (`not_requested`/`observed`/`capped`/`rate_limited`/`unavailable`/`empty`) when history is requested.\n\n**Profile-activity row** — `activity_url`, `activity_type`, `activity_source`, `activity_question_url`/`_title`/`_id`, `activity_answer_id`, `created_at`, `author_name`/`_url`/`_image_url`/`_id`/`_credentials`.\n\n**Topic row** — `topic_url`, `topic_id`, `topic_follower_count`, `topic_most_viewed_authors` (`uid`, `name`, `url`, `follower_count`, `num_views`, `num_public_most_viewed_answers`, `credential`), `topic_photo_url`, `topic_default_photo_url`, `topic_has_leaderboard`, and `topic_feed_state` (`not_requested`/`observed`/`capped`/`unavailable`).\n\n**Topic-Post row** — `post_url`, `post_pid`, `post_node_id`, `post_title` (explicit title or first content line), `post_body`, `post_media_urls`/`_image_urls`/`_video_urls`/`_outbound_links` (opt-in), `post_author_name`/`_url`/`_image_url`/`_id`/`_credentials`/`_is_verified`/`_is_anonymous`/`_follower_count`, `post_question_url`/`_title`, `topic_url`, `post_created_at`/`_updated_at`, `post_age_days`/`_state`, `post_updated_age_days`/`_state`, `post_upvote_count`, `post_view_count`, `post_share_count`, `post_comment_count`, `post_effective_access`, `post_is_question_summary`.\n\n**Space row** — `space_url`, `space_id`, `space_follower_count`, `space_all_time_followers` (conditional), `space_member_count`, `space_contributor_count`, `space_moderator_count`, `space_admin_count`, `space_description`, `space_icon_url`, `space_cover_url`, `space_item_count`, `space_feed_capped`, `space_ads_skipped`.\n\n**Space feed-item row** — `feed_url`, `feed_type`, `feed_title`, `feed_text` (opt-in), `feed_post_pid`/`feed_post_node_id` (post stories), `feed_author_name`/`_url`/`_image_url`/`_id`/`_credentials`/`_is_verified`/`_is_anonymous`, `feed_created_at`, `feed_age_days`/`_state`, `feed_upvote_count`, `feed_view_count`, `feed_share_count`, `feed_comment_count`, `feed_effective_access`, `feed_is_ai_answer`, `feed_question_url`/`_title`, `media_urls`/`image_urls`/`video_urls`/`outbound_links` (opt-in).\n\n**Relationship row (`entity_edge`)** — `relationship`, `edge_id`, `from_record_id`/`_content_type`/`_url`/`_id`, `to_record_id`/`_content_type`/`_url`/`_id`/`_name`/`_image_url`, `node_image_url`, `edge_state`, `unresolved_reason`, `edge_evidence_field`, `relationship_collection_key`, `collection_total_text`/`_value`.\n\n**Relationship-count row (`relationship_collection`)** — `relationship_collection_key`, `collection_total_text`, `collection_total_value`, `edge_evidence_field`.\n\n**Status row** — `access_state`, `http_status`, `error`, `source_url`, and for pages that failed to load `final_url`, `scrape_duration_ms`, `navigation_attempts`, `navigation_retries`. Run-level status rows (`url: run://quora-dataset-builder`) report a state store that could not be read (`state_store_unavailable`), state that was not saved because a source did not finish (`state_store_uncommitted`), or a run that produced no real rows (`no_records_emitted`).\n\n**Option-dependent fields** — with a `stateStoreId`, entity rows add `event_type` (`new`/`changed`/`unchanged`/`scope_mismatch`), `state_snapshot_hash`, `previous_snapshot_hash`, `state_scope_fingerprint`, `state_store_state`, `only_new_items`, `include_unchanged`. With `includeRawEvidence`, page-level rows add `raw_html_sha256`, `raw_html_bytes`, `raw_html_truncated`, `raw_html_returned_bytes`, `raw_html_redaction_state`, `raw_html_redactions`, `raw_evidence_state`, `raw_evidence_retention_days`, plus `raw_html` when `includeHtml` is also on and `rawEvidenceRetentionDays` is above zero. In `nested` format, question rows carry `answers` arrays (each answer with its `comments`) and `nested_*` count fields. With `maxItemsPerSource` set, rows add `max_items_per_source` and per-source cap fields.\n\n**Run-manifest row** — one per run, summarizing counts and the settings actually applied: `run_started_at`/`_finished_at`/`_duration_ms`, `records_emitted`, `source_pages_attempted`, `content_type_counts`, `access_state_counts`, `input_accounting`, `requested_result_types`, `requested_output_fields`, `dedupe_mode`, `duplicate_records_suppressed`, `proxy_path_used`, `proxy_resolution_state`, `search_discovery_source`, `search_discovery_hits`, `answer_gql_pages`, `answer_pagination_state`, `answer_pagination_unrelated_suppressed`, `comment_gql_pages`, `topic_feed_pages`, `space_feed_bundles`, `quora_plus_preview_count`, `comment_cap_hit_count`, `topic_feed_cap_hit_count`, `profile_history_pages`, `profile_history_state`, `relationship_identity_pages`, `relationship_identity_requests`, `relationship_identity_states`, `question_audit_state`, `question_audit_attempts`, `legacy_input_notes`, `hard_limits`, `gql_calls`, `query_hashes`, and the per-run values of your own input settings echoed back for reconciliation.\n\n## Trimming rows, depth, sessions and caps\n\n- **Field allowlist.** `outputFields` keeps only the fields you name, applied after extraction; an empty list returns the full row. Nested projection is supported with dotted paths such as `answers.answer_text` or `answers.comments.comment_text` in `nested` output. Child identity/URL fields stay in place, and `content_type`, identity, access/status, depth, timing and parser fields are always protected so a trimmed row can still be traced. `output_projection` on each row reads `full` or `selected`, and the run manifest records the requested fields. `includeFieldEvidence` toggles the `field_sources`/`fields_present` maps.\n- **Depth.** `scrapeDepth: \"detail\"` (default) runs the capped traversal; `overview` emits page-level summaries without answer, comment, profile-activity or Space-feed expansion. Every row reports `requested_depth`, `observed_depth` and `detail_expansion_state`. `bounded` means a configured cap was reached, not that Quora's full history was collected, and blocked pages report `observed_depth: \"status\"`.\n- **Caps.** `maxAnswersPerQuestion` bounds each question, `maxAnswers` is a global answer cap, `maxAnswerPages` bounds GraphQL pages explicitly, `maxItems` caps entity/status rows before graph/manifest rows, `maxItemsPerSource` caps each source, and `maxGraphEdges` caps relationship rows. When `maxItems`/`maxGraphEdges` is 0 the corresponding cap is off. `maxRelationshipItemsPerCollection` bounds each labeled relationship collection, `maxRelationshipPages` bounds each public identity-list query, and `maxProfileHistoryPages` bounds each profile answer/question list. `answer_pagination_limited` is emitted only when a configured page cap or a GraphQL rate limit stopped pagination; an exhausted source is not reported as a cap.\n- **Comments.** Set `includeComments: true`. When `maxCommentsPerAnswer` is 0, the documented fallback is 10 per answer. The actor calls `AllCommentsListQuery` with `after` cursors and a page size derived from your cap (up to 50), so a 24-comment answer is collected as 10 + 10 + 4 when the server pages at ten. `includeCommentReplies` (or `includeReplyGraph`) expands nested replies up to `maxCommentDepth`; `comment_page_limited` is set only when a cap is actually hit, and a `comments_capped` status row follows. If the paginated query fails, the actor falls back to the first-page loader rather than inventing rows. Comments use Quora's comment-area GraphQL, which `robots.txt` disallows for generic agents: keep this opt-in and review your own compliance posture.\n- **Topic feed.** Set `includeTopicFeed: true` to call the topic page's own public GraphQL feed. `maxTopicFeedPages` bounds pages. This path is also robots-sensitive; keep it opt-in.\n- **Question audit.** `includeQuestionAudit: true` reads the question's public `/log` page for `question_created_at`, `question_view_count`, `question_merge_count`, and the asker name/uid/profile/credential. It retries a transient 403 once, then keeps `question_audit_state: \"unavailable\"` and a `question_audit_unavailable` status row. `/log` is robots-disallowed for generic agents and is never part of the daily prefill.\n- **Profile history.** `includeProfileHistory: true` paginates `UserProfileAnswersMostRecent_RecentAnswers_Query` and `UserProfileQuestionsList_Questions_Query` and emits bounded `profile_activity` rows. `maxProfileHistoryPages` (default 0 = three pages per list) and `requestDelay` (used as a 1.5–2.5 s GraphQL pace when above zero) bound the work. A cap sets `profile_history_limited`; a 400/403 sets `profile_history_state: \"rate_limited\"` and a `profile_history_unavailable` status row instead of fabricated rows.\n- **Identity lists.** Identity rows are emitted only when `relationshipTypes` explicitly requests them, the matching family flag is on, and `includeSensitiveRelationshipData` is on for sensitive types. The public GraphQL operations cover profile followers/following people/questions/Spaces/Topics, question followers, answer upvoters, and Space admins/contributors/moderators/followers. `maxRelationshipItemsPerCollection` and `maxRelationshipPages` bound every list; Space role calls run from a `www.quora.com` page context. These lists are robots-sensitive and rate-sensitive; a failure keeps a `relationship_identity_unavailable` or `relationship_identities_not_observed` status row, and a page/item cap adds `relationship_identity_capped`.\n- **Sessions and proxies.** No account, login, cookie, or session secret is used. The transport ladder is direct (`curl_cffi`, fresh session per attempt) → optional user proxy override → Apify AUTO datacenter → RESIDENTIAL only as a hardcoded last resort after the free rungs fail. A missing `proxyConfiguration` never stops the run, and there is no paid default. `proxy_path_used` reports the rung that worked.\n- **Exact field names.** Every output field this actor can emit is listed under [Output per record](#output-per-record) above. Fields whose source is absent on a given page are omitted, not set to null or a sentinel.\n\n## Complete schema input inventory\n\nEvery input is optional. The daily prefill uses one public question URL with a small answer cap, comments and feeds off, and no paid proxy.\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `auto` | `auto` / `byQuestionUrls` / `byAnswerUrls` / `byProfileUrls` / `byTopicUrls` / `bySpaceUrls` / `byPostUrls` / `search`; typed modes validate seed routes |\n| `scrapeDepth` | string | `detail` | `overview` (page-level summary only) or `detail` (full capped traversal) |\n| `startUrls` | array | `[]` | Question, answer, profile, Topic, Space, or Post URLs; mixed lists are auto-detected and invalid hosts become status rows |\n| `searchQueries` | array | `[]` | Best-effort discovery terms; Quora's native search is login/Cloudflare-gated and is never claimed |\n| `questionUrls` | array | `[]` | Typed question seeds |\n| `answerUrls` | array | `[]` | Typed answer-permalink seeds |\n| `topicUrls` | array | `[]` | Typed Topic seeds |\n| `spaceUrls` | array | `[]` | Typed Space seeds; automatically enables Space output |\n| `profileUrls` | array | `[]` | Typed profile seeds |\n| `postUrls` | array | `[]` | Typed standalone Post seeds |\n| `resultTypes` | array | `[\"question\",\"answer\",\"comment\",\"profile\",\"profile_activity\",\"topic\",\"topic_post\",\"space\",\"space_feed_item\",\"entity_edge\",\"status\",\"run_manifest\"]` | Which `content_type` values to include |\n| `outputFormat` | string | `normalized` | `normalized` / `nested` / `flat` / `edges` |\n| `dedupeMode` | string | `canonical` | `canonical` (merge duplicate entities by canonical URL/ID) or `none` |\n| `onlyNewItems` | boolean | `false` | With `stateStoreId`, suppress rows unchanged since the last run |\n| `includeUnchanged` | boolean | `true` | Keep unchanged rows when `onlyNewItems` is on |\n| `stateStoreId` | string | - | Apify key-value store name for incremental re-scraping; required when `onlyNewItems` is on |\n| `outputFields` | array | `[]` | Optional field allowlist for smaller rows; identity/status fields are always kept |\n| `includeFieldEvidence` | boolean | `true` | Include `field_sources`/`fields_present` on each row |\n| `includeUnresolvedEdges` | boolean | `true` | Keep relationship rows whose target could not be matched |\n| `relationshipTypes` | array | `[]` | Allowlist of labeled relationship collections to expand (follower, following, want-answers, upvoter, Space role); identity-revealing types also need `includeSensitiveRelationshipData` and the matching family opt-in |\n| `includeProfileEdges` | boolean | `false` | Per-family opt-in for profile follower/following/question/space/topic relationships |\n| `includeQuestionFollowerEdges` | boolean | `false` | Per-family opt-in for question follower/want-answer identities (sensitive) |\n| `includeAnswerUpvoterEdges` | boolean | `false` | Per-family opt-in for answer upvoter identities (requires `includeSensitiveRelationshipData`) |\n| `includeSensitiveRelationshipData` | boolean | `false` | Privacy gate required for identity-revealing relationship collections |\n| `includeTargetMetadata` | boolean | `false` | Keep the visible name/image of each relationship target |\n| `includeRelationshipCounts` | boolean | `false` | Emit privacy-preserving member-count rows; also add `relationship_collection` to `resultTypes` |\n| `includeSpaceRoleEdges` | boolean | `false` | Keep Space contributor/moderator/admin edges |\n| `includeSpaceContentEdges` | boolean | `true` | Keep Space to post/question membership edges and feed-item membership |\n| `maxRelationshipItemsPerCollection` | integer | `500` | Cap per labeled relationship collection |\n| `maxQuestions` | integer | `25` | How many discovered question links get queued on top of your own seed URLs |\n| `maxAnswersPerQuestion` | integer | `10` | Maximum answer rows kept per question after SSR and GraphQL pagination |\n| `maxAnswers` | integer | `0` | Global answer cap across the whole run (`0` = no cap) |\n| `includeQuestion` | boolean | `true` | Keep question entities in the output |\n| `includeAuthor` | boolean | `true` | Keep author/profile entities and author fields in the output |\n| `includeAuthorSnapshot` | boolean | `false` | Fetch a bounded profile snapshot for each visible answer author |\n| `includeTopics` | boolean | `true` | Keep topic entities and topic links |\n| `includeSpaces` | boolean | `false` | Keep Space and Space feed-item rows; switched on automatically when a Space URL is used in `startUrls` or `spaceUrls` |\n| `includeComments` | boolean | `false` | Opt-in comment rows with `AllCommentsListQuery` cursor pagination; robots-sensitive |\n| `includeEngagementBreakdown` | boolean | `true` | Include per-reaction breakdowns alongside aggregate counts |\n| `includeRelatedContent` | boolean | `false` | Collect explicitly attached answer related-content links when Quora's public payload exposes them; otherwise they are omitted |\n| `maxRelatedContent` | integer | `20` | Bound related-content links per answer when enabled; zero emits no related-content items |\n| `topCommentsOnly` | boolean | `false` | Keep only comments explicitly labeled Top/Most helpful |\n| `commentSortOrder` | string | `observed` | `observed` / `upvotes_desc` / `reactions_desc` / `replies_desc` / `newest` |\n| `includeReplyGraph` | boolean | `false` | Compatibility alias that enables comments and nested replies |\n| `includeMedia` | boolean | `false` | Include image/video URL fields where available |\n| `includeFeedText` | boolean | `false` | Include visible text on Space feed cards |\n| `includeOutboundLinks` | boolean | `false` | Include non-Quora links found in rich text |\n| `includeEntityGraph` | boolean | `false` | Emit relationship rows even when `entity_edge` is not in `resultTypes` |\n| `maxCommentsPerAnswer` | integer | `0` | Comments kept per answer; when comments are on and this is 0, the fallback is 10; the cap is the pagination limit, not a page size |\n| `maxCommentDepth` | integer | `20` | Maximum nested reply depth when replies are enabled; 0 disables replies |\n| `maxItems` | integer | `0` | Cap on entity/status rows before graph and manifest rows (`0` = no cap) |\n| `maxGraphEdges` | integer | `5000` | Cap on relationship rows (`0` = no edges) |\n| `maxScrollAttempts` | integer | `5` | Scroll attempts per page in detail mode |\n| `maxLoadMoreAttempts` | integer | `0` | \"Load more\" button clicks per page |\n| `includeRawEvidence` | boolean | `false` | Attach a document hash and size/redaction metadata for auditing |\n| `includeHtml` | boolean | `false` | Retain bounded raw HTML on page-level rows and derived answer HTML |\n| `maxHtmlBytes` | integer | `100000` | Upper bound for retained or derived HTML |\n| `requestDelay` | number | `1` | Delay in seconds between page batches |\n| `maxConcurrency` | integer | `1` | Independent seeds processed in parallel (values above 3 are treated as 3) |\n| `maxNavigationRetries` | integer | `2` | Retries after a failed page load (max 3) |\n| `language` | string | `auto` | Browser language hint (`en`, `es`, `fr`, ...); not a translation guarantee |\n| `proxyConfiguration` | object | - | Optional proxy override. The free ladder runs first; there is no paid default |\n| `redactSensitiveQueryParams` | boolean | `true` | Redact credential-like query values and fragment credentials from emitted URLs/HTML |\n| `rawEvidenceRetentionDays` | integer | `30` | Retention label for raw HTML evidence; 0 keeps metadata only |\n| `maxRawEvidenceBytes` | integer | `100000` | Size bound for raw HTML evidence |\n| `maxItemsPerSource` | integer | `0` | Cap on records from each individual source URL/query (`0` = no cap) |\n| `searchDiscovery` | string | `relatedOnly` | `relatedOnly` (related questions only) / `bestEffortIndex` (third-party index) / `off` |\n| `maxRelatedQuestions` | integer | `20` | Related questions enqueued per question seed |\n| `searchResultsPerQuery` | integer | `10` | Maximum best-effort index results per query |\n| `maxAnswerPages` | integer | `0` | Explicit answer GraphQL page cap; 0 derives from `maxAnswersPerQuestion` |\n| `maxTopicFeedPages` | integer | `3` | Topic-feed GraphQL page cap when `includeTopicFeed` is on (minimum one page) |\n| `maxSpaceFeedBundles` | integer | `4` | Space feed bundles read from the SSR multifeed |\n| `includeCommentReplies` | boolean | `false` | Expand nested `repliesConnection` comment replies |\n| `includeQuoraPlusPreview` | boolean | `true` | Emit Quora+ preview answers with preview flags; when false, omit them |\n| `includeProfileStats` | boolean | `true` | Emit profile follower/following/answer/question/post/view/joined/credential fields |\n| `includeTopicStats` | boolean | `true` | Emit Topic follower count and most-viewed authors |\n| `includeSpaceStats` | boolean | `true` | Emit Space counters, description, icon and cover |\n| `includePostStats` | boolean | `true` | Emit Post counters, effective access and question-summary flag |\n| `includeAnswerStats` | boolean | `true` | Emit answer counters, dates, AI flag and effective access |\n| `includeTopicFeed` | boolean | `false` | Browser GraphQL Topic feed; opt-in and robots-sensitive |\n| `includeQuestionAudit` | boolean | `false` | Read the public question `/log` for created time, view count, merge count, and asker identity; robots-sensitive opt-in |\n| `includeProfileHistory` | boolean | `false` | Paginate the public profile answer/question tabs into bounded `profile_activity` rows; robots- and rate-sensitive opt-in |\n| `maxProfileHistoryPages` | integer | `0` | Cap per profile history list; 0 derives three pages (about 30 items per list) |\n| `maxRelationshipPages` | integer | `3` | Cap per public identity-list query after the relationship allowlist and privacy gates |\n\n## Example inputs\n\n### Example: full detail for a question\n\n```json\n{\n  \"questionUrls\": [{ \"url\": \"https://www.quora.com/What-is-the-best-way-to-learn-Python\" }],\n  \"maxAnswersPerQuestion\": 20,\n  \"includeComments\": true,\n  \"maxCommentsPerAnswer\": 10\n}\n```\n\n### Example: best-effort search discovery, compact nested output\n\n```json\n{\n  \"searchQueries\": [\"machine learning career advice\"],\n  \"searchDiscovery\": \"relatedOnly\",\n  \"maxQuestions\": 10,\n  \"outputFormat\": \"nested\",\n  \"maxAnswersPerQuestion\": 5\n}\n```\n\n### Example: a Space's content and follower count\n\n```json\n{\n  \"spaceUrls\": [{ \"url\": \"https://www.quora.com/q/example-space\" }],\n  \"resultTypes\": [\"space\", \"space_feed_item\", \"relationship_collection\", \"run_manifest\"],\n  \"includeRelationshipCounts\": true,\n  \"relationshipTypes\": [\"space_has_contributor\"]\n}\n```\n\n### Example: incremental re-scrape of the same question\n\n```json\n{\n  \"questionUrls\": [{ \"url\": \"https://www.quora.com/What-is-the-best-way-to-learn-Python\" }],\n  \"onlyNewItems\": true,\n  \"includeUnchanged\": false,\n  \"stateStoreId\": \"python-question-watch\"\n}\n```\n\n## Use cases\n\n- **Content research** — pull full question-answer-comment threads on a topic for analysis\n- **Community monitoring** — re-scrape the same questions on a schedule and keep only rows flagged `new`/`changed`\n- **Knowledge graph building** — use `outputFormat: \"edges\"` to load the question/answer/topic relationship graph into a graph database\n- **Influencer and expert tracking** — follow a profile's visible answers and its public follower/following/content statistics\n- **Space analysis** — collect a Quora Space's feed, metrics and contributor counts\n\n## FAQ\n\n**Do I need a Quora account?**\nNo. Direct public question, answer, profile, Topic, Space, and Post pages are read without login. The actor never asks for, stores, or emits cookies or session secrets.\n\n**Why did I get a `status` row instead of question/answer data?**\nQuora showed a login wall, Cloudflare challenge, a removed page, or an unsupported redirect for that URL. The actor reports this honestly as a `status` row instead of guessing at data that was not there. A run with zero real rows also gets a `no_records_emitted` status row and a non-success status message.\n\n**Why do I sometimes get fewer answers than `maxAnswersPerQuestion`?**\nThe actor reads the server-rendered answers, filters out answers whose question is provably unrelated, then paginates the public GraphQL cursor up to your cap. If the question genuinely has fewer answers, the cursor stops; you get the answers that were observable and no `answer_pagination_limited` row, because the source was exhausted rather than capped. `answer_pagination_limited` appears only when `maxAnswerPages`/your cap stopped a non-exhausted source or Quora rate-limited a pagination request, and the page's known `answerCount` is not already satisfied; a non-rate GraphQL failure uses `answer_pagination_unavailable`. Neither case fabricates an answer.\n\n**How do I get question created time, view count, or the asker?**\nSet `includeQuestionAudit: true`. The actor reads the public `/<question>/log` page (robots-sensitive, opt-in) and fills `question_created_at`, `question_view_count`, `question_merge_count`, and the `question_author_*` fields. Without it, those fields are omitted rather than guessed. A blocked `/log` leaves `question_audit_state: \"unavailable\"` and a status row.\n\n**How do I get more than the three visible profile history items?**\nSet `includeProfileHistory: true`. The actor paginates the public answer/question tab connections into `profile_activity` rows, bounded by `maxProfileHistoryPages` and paced by `requestDelay`. This GraphQL path is robots- and rate-sensitive; a 400/403 leaves a `profile_history_unavailable` status row and no fabricated rows.\n\n**What is the difference between the four `outputFormat` values?**\n`normalized` keeps every entity as its own row (the default). `nested` groups each question's answers (and each answer's comments) underneath it; rows without a matching parent stay at the top level with an orphan reason. `flat` is like `normalized`, except answer rows also get question context and comment rows get `answer_url`. `edges` returns the relationship rows between entities plus any status rows.\n\n**Can I get a Quora account's followers, question followers, answer upvoters, or Space roles?**\nYes, as explicit opt-ins. Request the relationship type in `relationshipTypes`, turn on the matching family flag (`includeProfileEdges`, `includeQuestionFollowerEdges`, `includeAnswerUpvoterEdges`, or `includeSpaceRoleEdges`), and set `includeSensitiveRelationshipData: true` for follower/upvoter/want-answer types. The actor then calls the public identity-list GraphQL operations, paginates up to `maxRelationshipPages`, and emits only identities whose profile/question/Space/Topic URLs it observed. It may also use visible DOM links as a fallback. These paths are robots- and rate-sensitive; failures produce `relationship_identity_unavailable` or `relationship_identities_not_observed` status rows. It never invents identities.\n\n**What does the incremental re-scrape (`onlyNewItems`) actually compare?**\nIt hashes each entity's semantic content and compares it to the previous run stored under `stateStoreId`, tagging each row `new`, `changed`, `unchanged`, or `scope_mismatch` (the previous run used different settings). Rows are only dropped when `onlyNewItems` is on and `includeUnchanged` is off. Status and manifest rows are never dropped by this setting. If any requested source did not finish, the new state is not saved and a `state_store_uncommitted` status row tells you so.\n\n**Why are some text/media fields missing even with `includeMedia`/`includeHtml` on?**\nThose fields are only populated when Quora's public payload actually contains that content for the entity in question. The toggles request the data; they do not guarantee every entity has it.\n\n**Is search native Quora search?**\nNo. Quora's native `/search?q=` is login/Cloudflare-gated for logged-out clients and is disallowed by `robots.txt`. `searchQueries` uses related-question discovery by default and an optional third-party best-effort index; if no public results are discoverable it emits a `search_unavailable` status row.\n\n**What are the hard limitations?**\nNative Quora search is not available cookielessly: `/search?q=` redirects and the public search GraphQL returns no connection. Quora+ `smart_distribution` answers may be preview/truncated; they are flagged `answer_is_quora_plus` and their observed completeness is reported, and no gated remainder is fabricated. Space all-time views/upvotes/comments are private (tested across ten diverse Spaces), Topic description and question count are absent, and question description is absent. Space `allTimeFollowers` is emitted as `space_all_time_followers` only when the payload carries it (not every Space does).\n\nQuestion created/view/asker, full profile history, comment/reply pagination, and identity lists are technically available through public pages/GraphQL but are **robots-sensitive and/or rate-sensitive opt-ins**; they are off by default and not part of the daily prefill. Be aware that `robots.txt` for generic agents disallows `/` broadly, including `/*_POST`, `/*/log`, `/*/followers`, `/*/following`, and `/*/comments`; product/legal review decides whether to enable those opt-ins. Quora URLs are valid in a browser, but plain HTTP clients can receive a Cloudflare 403 on HEAD/GET; the actor fetches them with TLS impersonation.\n\n**Is this affiliated with Quora?**\nNo. This is an independent, third-party actor that reads public Quora pages; it is not affiliated with or endorsed by Quora, Inc. You are responsible for how you use the data.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "quora-question-answer-and-relationship-dataset",
      "title": "Quora Question, Answer & Relationship Dataset Builder",
      "description": "Build a structured Quora dataset from question, answer, profile, Topic, Space, and Post URLs or search terms, with the question-answer-comment chain and relationship links kept intact.",
      "version": "1.0",
      "buildTag": "latest",
      "meta": {
        "templateId": "python-playwright"
      },
      "input": {
        "title": "Quora Dataset Builder Input",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "editor": "select",
            "enum": [
              "auto",
              "byQuestionUrls",
              "byAnswerUrls",
              "byProfileUrls",
              "byTopicUrls",
              "bySpaceUrls",
              "byPostUrls",
              "search"
            ],
            "enumTitles": [
              "Auto-detect any supported URL",
              "Questions and answers",
              "Specific answer permalinks",
              "Profiles and stats",
              "Topics and optional feed",
              "Spaces and feeds",
              "Standalone posts",
              "Best-effort search discovery"
            ],
            "default": "auto",
            "prefill": "auto",
            "description": "Optional dispatcher. auto detects every supported Quora route; typed modes validate startUrls against that route. Typed seed lists still work without mode."
          },
          "scrapeDepth": {
            "title": "Scrape Depth",
            "type": "string",
            "enum": [
              "overview",
              "detail"
            ],
            "enumTitles": [
              "Overview (page metadata only)",
              "Detail (answers, comments, feeds)"
            ],
            "default": "detail",
            "prefill": "detail",
            "description": "Overview emits page metadata without answer/comment/feed expansion; detail enables SSR answers plus bounded GraphQL pagination and optional comments/topic feeds."
          },
          "startUrls": {
            "title": "Quora URLs",
            "type": "array",
            "editor": "requestListSources",
            "description": "Question, answer, profile, topic, Space, or search URLs. Mixed lists are auto-detected; invalid hosts become status rows instead of failing the run.",
            "default": [],
            "prefill": [
              {
                "url": "https://www.quora.com/What-is-the-meaning-of-life"
              }
            ]
          },
          "searchQueries": {
            "title": "Search Queries",
            "type": "array",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "description": "Best-effort public-index discovery only. Quora native search is login/Cloudflare-gated and robots-disallowed; related-question expansion on a question URL is the reliable discovery axis."
          },
          "questionUrls": {
            "title": "Question URLs",
            "type": "array",
            "editor": "requestListSources",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "description": "A Quora URL.",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ]
            },
            "default": [],
            "description": "Explicit question-page seeds. Only question routes are accepted."
          },
          "answerUrls": {
            "title": "Answer URLs",
            "type": "array",
            "editor": "requestListSources",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "description": "A Quora URL.",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ]
            },
            "default": [],
            "description": "Explicit answer-page seeds. Parent question joins are emitted only from observed evidence."
          },
          "topicUrls": {
            "title": "Topic URLs",
            "type": "array",
            "editor": "requestListSources",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "description": "A Quora URL.",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ]
            },
            "default": [],
            "description": "Explicit Topic-page seeds for bounded visible question discovery."
          },
          "spaceUrls": {
            "title": "Space URLs",
            "type": "array",
            "editor": "requestListSources",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "description": "A Quora URL.",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ]
            },
            "default": [],
            "description": "Explicit Space-page seeds for bounded visible feed discovery."
          },
          "profileUrls": {
            "title": "Profile URLs",
            "type": "array",
            "editor": "requestListSources",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "description": "A Quora URL.",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ]
            },
            "default": [],
            "description": "Explicit profile-page seeds. Only profile routes are accepted; emitted as normalized profile rows exactly like a profile route discovered from startUrls."
          },
          "postUrls": {
            "title": "Post URLs",
            "type": "array",
            "editor": "requestListSources",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "description": "A Quora URL.",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ]
            },
            "default": [],
            "description": "Explicit standalone Post-page seeds. Only post routes are accepted; emitted with the same topic_post field family topic-discovered posts use (post_title, post_body, post_author_*)."
          },
          "resultTypes": {
            "title": "Result Types",
            "type": "array",
            "description": "Select normalized entities, explicit graph relationships, relationship-collection counts, status rows, and the final run manifest.",
            "editor": "select",
            "items": {
              "type": "string",
              "enum": [
                "question",
                "answer",
                "comment",
                "profile",
                "profile_activity",
                "topic",
                "topic_post",
                "space",
                "space_feed_item",
                "entity_edge",
                "relationship_collection",
                "status",
                "run_manifest"
              ]
            },
            "default": [
              "question",
              "answer",
              "comment",
              "profile",
              "profile_activity",
              "topic",
              "topic_post",
              "space",
              "space_feed_item",
              "entity_edge",
              "status",
              "run_manifest"
            ]
          },
          "outputFormat": {
            "title": "Output Format",
            "type": "string",
            "enum": [
              "normalized",
              "nested",
              "flat",
              "edges"
            ],
            "enumTitles": [
              "Normalized (one row per entity)",
              "Nested (answers under questions)",
              "Flat (entity rows with parent context)",
              "Edges (relationship rows)"
            ],
            "default": "normalized",
            "prefill": "normalized",
            "description": "Projection after one canonical extraction path. Nested groups emitted answers and comments under explicit question/answer parents; flat keeps entity rows with parent context; edges emits explicit edge rows plus status rows."
          },
          "dedupeMode": {
            "title": "Deduplication Mode",
            "type": "string",
            "enum": [
              "canonical",
              "none"
            ],
            "enumTitles": [
              "Canonical (deduplicate by ID/URL)",
              "None (keep every observed row)"
            ],
            "default": "canonical",
            "prefill": "canonical",
            "description": "canonical suppresses overlapping entity rows by stable ID or canonical URL (default); none preserves every observed non-status row. The run manifest reports duplicate_records_suppressed."
          },
          "onlyNewItems": {
            "title": "Only New or Changed Items",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Annotate canonical entity rows with new/changed/unchanged/scope_mismatch state and suppress only unchanged semantic rows when includeUnchanged is false. Requires stateStoreId; status, graph, and manifest rows remain visible."
          },
          "includeUnchanged": {
            "title": "Include Unchanged Items",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Retain unchanged semantic entities when incremental state is enabled; output projection does not alter comparison hashes."
          },
          "stateStoreId": {
            "title": "Incremental State Store ID",
            "type": "string",
            "editor": "textfield",
            "default": "",
            "description": "Apify key-value store for canonical entity snapshots. Required when onlyNewItems is enabled; never store cookies or credentials here."
          },
          "outputFields": {
            "title": "Output Fields",
            "type": "array",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "description": "Optional allowlist for compact rows, including bounded dotted paths through nested collections (for example answers.answer_text, comments.comment_text, feed.feed_text, or contributors.contributor_name where applicable). Child identity/URL fields and the actor identity, access/status, source, traversal, graph, filter, and parser-envelope fields remain protected.",
            "maxItems": 3000
          },
          "includeFieldEvidence": {
            "title": "Include Field Evidence",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Include field_sources and fields_present maps. Disable only when a smaller payload is required; semantic values and protected access fields remain unchanged."
          },
          "includeUnresolvedEdges": {
            "title": "Include Unresolved Edges",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Retain relationship rows whose endpoint URL was not explicitly observed, with unresolved_reason. Disabling this suppresses only those edge rows and does not imply complete relationships."
          },
          "relationshipTypes": {
            "title": "Relationship Types",
            "type": "array",
            "editor": "select",
            "items": {
              "type": "string",
              "enum": [
                "profile_follows_profile",
                "profile_followed_by_profile",
                "profile_follows_question",
                "profile_follows_space",
                "profile_follows_topic",
                "profile_has_expertise",
                "question_followed_by_profile",
                "question_wants_answers_from_profile",
                "answer_upvoted_by_profile",
                "space_followed_by_profile",
                "space_has_contributor",
                "space_has_moderator",
                "space_has_admin",
                "space_contains_post",
                "space_contains_question",
                "space_contains_unanswered_question",
                "profile_authored_answer",
                "profile_authored_question",
                "profile_authored_post",
                "question_has_topic",
                "question_has_answer",
                "answer_belongs_to_question",
                "answer_authored_by_profile",
                "comment_belongs_to_answer",
                "comment_reply_to_comment",
                "comment_authored_by_profile",
                "post_authored_by_profile",
                "post_in_space",
                "profile_has_activity",
                "space_has_feed_item"
              ]
            },
            "default": [],
            "description": "Explicit relationship-type allowlist for the newly ported follower/following/want-answers/upvoter/space-role relationship collections. Empty leaves the existing always-on content-membership/authorship edges untouched (question_has_topic, answer_authored_by, comment_belongs_to_answer, profile_has_activity, space_has_feed_item, etc.); this allowlist only gates the additional collections below. Sensitive follower/want-answer/upvoter types also require includeSensitiveRelationshipData and their matching collection opt-in."
          },
          "includeProfileEdges": {
            "title": "Include Profile Relationship Collections",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Enable explicitly labeled profile follower/following/followed-question/Space/Topic relationship collections. This does not prove a complete list."
          },
          "includeQuestionFollowerEdges": {
            "title": "Include Question Follower Collections",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Enable explicitly labeled question follower or want-answer collections. Sensitive identity rows also require the privacy gate."
          },
          "includeAnswerUpvoterEdges": {
            "title": "Include Answer Upvoter Collections",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "High-sensitivity opt-in for explicitly labeled answer upvoter identities; requires includeSensitiveRelationshipData=true."
          },
          "includeSensitiveRelationshipData": {
            "title": "Sensitive Relationship Data",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Explicit privacy gate required for follower, want-answer, and upvoter identity edges."
          },
          "includeTargetMetadata": {
            "title": "Include Explicit Target Metadata",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Retain explicitly visible target link text and image (to_name, to_image_url) on relationship edges. URLs remain evidence; no target navigation or recursive target scraping is performed."
          },
          "includeRelationshipCounts": {
            "title": "Include Relationship Collection Counts",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Emit privacy-preserving relationship_collection rows with the real observed total (collection_total_text/collection_total_value) but no target identities. Requires relationship_collection in resultTypes. Observed totals are not always a server-confirmed count."
          },
          "includeSpaceRoleEdges": {
            "title": "Include Space Role Edges",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Enable explicitly labeled Space contributor, moderator, and admin collections."
          },
          "includeSpaceContentEdges": {
            "title": "Include Space Content Edges",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Retain bounded explicit Space post/question membership edges; this never claims a complete Space inventory."
          },
          "maxRelationshipItemsPerCollection": {
            "title": "Maximum Relationship Items per Collection",
            "type": "integer",
            "default": 500,
            "minimum": 0,
            "maximum": 5000,
            "description": "Bound explicit links emitted from each labeled relationship collection. Zero emits no relationship-collection edges and never means an empty collection."
          },
          "maxQuestions": {
            "title": "Maximum Questions",
            "type": "integer",
            "description": "Maximum question seeds or discovered question pages to process.",
            "default": 25,
            "minimum": 0,
            "maximum": 1000,
            "prefill": 10
          },
          "maxAnswersPerQuestion": {
            "title": "Maximum Answers per Question",
            "type": "integer",
            "description": "Maximum answer rows retained per question after SSR and GraphQL pagination.",
            "default": 10,
            "minimum": 0,
            "maximum": 500,
            "prefill": 5
          },
          "maxAnswers": {
            "title": "Maximum Answers Total",
            "type": "integer",
            "default": 0,
            "minimum": 0,
            "maximum": 50000,
            "description": "Global answer-row cap applied after per-question caps. Zero means no configured global answer cap."
          },
          "includeQuestion": {
            "title": "Include Question Rows",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Retain normalized question parent rows when selected in resultTypes."
          },
          "includeAuthor": {
            "title": "Include Author Rows",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Retain visible author fields and profile/profile-activity rows. When false, author fields and author rows are removed from the emitted shape; no contact enrichment is performed."
          },
          "includeAuthorSnapshot": {
            "title": "Include Author Snapshot",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Opt into bounded public profile snapshots for visible author profile links; profile access/status is separate from answer/comment success and never includes contact enrichment."
          },
          "includeTopics": {
            "title": "Include Topic Links",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Retain explicit topic links and topic relationships where observed."
          },
          "includeSpaces": {
            "title": "Include Space Rows",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Retain Space rows and SSR feed items. Explicit spaceUrls enable this automatically."
          },
          "includeComments": {
            "title": "Include Comment Rows",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Opt-in comment rows from Quora's public comment-area GraphQL. robots-sensitive; off by default. When enabled and maxCommentsPerAnswer is 0, the documented fallback is 10 per answer."
          },
          "includeEngagementBreakdown": {
            "title": "Include Engagement Breakdown",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Retain explicitly labeled per-comment reaction breakdowns alongside aggregate reaction labels. Raw labels are preserved and typed companions are added only when the localized number is unambiguous."
          },
          "includeRelatedContent": {
            "title": "Include Answer Related Content",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Retain links inside an explicitly labeled related/attached region scoped to answer cards; unlabeled navigation and neighboring regions are excluded."
          },
          "maxRelatedContent": {
            "title": "Maximum Answer Related Content",
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "default": 20,
            "description": "Bound eligible related-content links per answer when enabled; zero emits no related-content items."
          },
          "topCommentsOnly": {
            "title": "Top-Labeled Comments Only",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Retain only comments with an explicit visible Top/Most helpful/Popular comments label. Unknown comments are excluded and counted; votes and position are not used as top evidence."
          },
          "commentSortOrder": {
            "title": "Comment Sort Order",
            "type": "string",
            "enum": [
              "observed",
              "upvotes_desc",
              "reactions_desc",
              "replies_desc",
              "newest"
            ],
            "enumTitles": [
              "Observed order",
              "Most upvotes",
              "Most reactions",
              "Most replies",
              "Newest first"
            ],
            "default": "observed",
            "description": "Order builder comment rows by observed order or an explicitly typed metric/timestamp. Unknown selected metrics remain in stable fallback order and are counted."
          },
          "includeReplyGraph": {
            "title": "Include Reply Graph",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Enable comment rows plus one-level nested reply extraction from repliesConnection. Requires includeComments."
          },
          "includeMedia": {
            "title": "Include Media URLs",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Request explicitly rendered media URL fields scoped to question roots, answer/comment nodes, and Topic post cards where the page exposes them."
          },
          "includeFeedText": {
            "title": "Include Space Feed Text",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Request bounded visible text from explicitly linked Space feed cards; page-level text and complete feed history are excluded."
          },
          "includeOutboundLinks": {
            "title": "Include Outbound Links",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Request visible non-Quora links scoped to question roots, answer/comment nodes, and Topic post cards; Quora links, comment permalinks, and links outside the owning scope are excluded."
          },
          "includeEntityGraph": {
            "title": "Include Entity Graph",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Emit explicit relationship rows even when entity_edge is not listed in resultTypes."
          },
          "maxCommentsPerAnswer": {
            "title": "Maximum Comments per Answer",
            "type": "integer",
            "description": "Maximum comment rows retained per answer when comments are enabled. Schema default 0 is kept for compatibility; comments-enabled runs treat 0 as 10.",
            "default": 0,
            "minimum": 0,
            "maximum": 500,
            "prefill": 0
          },
          "maxCommentDepth": {
            "title": "Maximum Comment Depth",
            "type": "integer",
            "description": "Maximum nested reply depth when includeCommentReplies/includeReplyGraph is enabled.",
            "default": 20,
            "minimum": 0,
            "maximum": 100,
            "prefill": 20
          },
          "maxItems": {
            "title": "Maximum Entity Rows",
            "type": "integer",
            "default": 0,
            "minimum": 0,
            "maximum": 5000,
            "description": "Cap for normalized entity/status rows before graph and manifest rows."
          },
          "maxGraphEdges": {
            "title": "Maximum Graph Edges",
            "type": "integer",
            "description": "Independent cap for deterministic entity_edge rows.",
            "default": 5000,
            "minimum": 0,
            "maximum": 50000,
            "prefill": 1000
          },
          "maxScrollAttempts": {
            "title": "Maximum Scroll Attempts",
            "type": "integer",
            "description": "Bounded lazy-render scroll budget applied during detail traversal; scroll attempts and termination state are reported.",
            "default": 5,
            "minimum": 0,
            "maximum": 20
          },
          "maxLoadMoreAttempts": {
            "title": "Maximum Load-more Attempts",
            "type": "integer",
            "description": "Bound exact visible continuation-control clicks on direct question, answer, topic, and Space collection pages independently from scrolling. Search seeds fan out through their discovered child URLs and retain their own source accounting.",
            "default": 0,
            "minimum": 0,
            "maximum": 20
          },
          "includeRawEvidence": {
            "title": "Include Raw Evidence",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Add bounded document hash and optional HTML bytes to each page-level entity row."
          },
          "includeHtml": {
            "title": "Include HTML",
            "type": "boolean",
            "description": "Include bounded raw-document HTML when raw evidence is enabled and bounded answer-card HTML when answer cards are extracted.",
            "default": false,
            "prefill": false
          },
          "maxHtmlBytes": {
            "title": "Maximum HTML Bytes",
            "type": "integer",
            "description": "Maximum UTF-8 bytes retained for optional raw HTML evidence.",
            "default": 100000,
            "minimum": 1000,
            "maximum": 2000000
          },
          "requestDelay": {
            "title": "Request Delay",
            "type": "number",
            "description": "Delay between page batches in seconds; this is not an anti-bot bypass guarantee.",
            "default": 1,
            "minimum": 0,
            "maximum": 30
          },
          "maxConcurrency": {
            "title": "Maximum Concurrent Seeds",
            "type": "integer",
            "description": "Maximum independent seed pages processed concurrently in deterministic batches. Each seed owns a page; discovered seeds merge in batch order.",
            "default": 1,
            "minimum": 1,
            "maximum": 3
          },
          "maxNavigationRetries": {
            "title": "Maximum Navigation Retries",
            "type": "integer",
            "default": 2,
            "minimum": 0,
            "maximum": 3,
            "description": "Bounded retries after navigation exceptions (e.g. a transient proxy-tunnel handshake failure); exponential backoff is reported in navigation_retry_delays_seconds. Defaults to 2 for reliability."
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Browser language hint. Short language codes and supported regional aliases are accepted and normalize to the short code; auto keeps the actor default. This does not translate content or prove access.",
            "enum": [
              "auto",
              "en",
              "es",
              "fr",
              "de",
              "pt",
              "it",
              "ja",
              "ko",
              "hi",
              "id",
              "nl",
              "pl",
              "tr",
              "vi",
              "zh",
              "ru",
              "en-US",
              "en-GB",
              "de-DE",
              "fr-FR",
              "es-ES",
              "pt-BR",
              "it-IT",
              "ja-JP",
              "ko-KR",
              "hi-IN",
              "tr-TR",
              "zh-CN",
              "zh-TW",
              "ru-RU"
            ],
            "enumTitles": [
              "Automatic",
              "English",
              "Spanish",
              "French",
              "German",
              "Portuguese",
              "Italian",
              "Japanese",
              "Korean",
              "Hindi",
              "Indonesian",
              "Dutch",
              "Polish",
              "Turkish",
              "Vietnamese",
              "Chinese",
              "Russian",
              "English (US)",
              "English (UK)",
              "German (Germany)",
              "French (France)",
              "Spanish (Spain)",
              "Portuguese (Brazil)",
              "Italian (Italy)",
              "Japanese (Japan)",
              "Korean (Korea)",
              "Hindi (India)",
              "Turkish (Turkey)",
              "Chinese (Simplified)",
              "Chinese (Traditional)",
              "Russian (Russia)"
            ],
            "default": "auto"
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration (optional)",
            "type": "object",
            "description": "Optional proxy override. The actor starts with a direct connection, retries a fresh session on 403/429, then uses Apify AUTO datacenter proxies, and only falls back to RESIDENTIAL as a proven last resort. Leave this unset; a missing proxyConfiguration never stops the run.",
            "editor": "proxy"
          },
          "redactSensitiveQueryParams": {
            "title": "Redact Sensitive URL Query Values",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Redact narrow credential-like query parameter values in emitted URLs, graph endpoints, redirect chains, and raw HTML. The original document hash remains based on the captured document."
          },
          "rawEvidenceRetentionDays": {
            "title": "Raw Evidence Retention Days",
            "type": "integer",
            "default": 30,
            "minimum": 0,
            "maximum": 30,
            "description": "When zero, suppress raw_html snapshots while retaining hash, size, and redaction diagnostics. Positive values permit bounded HTML for the requested run; external Apify dataset/run retention still applies."
          },
          "maxRawEvidenceBytes": {
            "title": "Maximum Raw Evidence Bytes",
            "type": "integer",
            "default": 100000,
            "minimum": 1000,
            "maximum": 2000000,
            "description": "Hard upper byte cap for returned raw HTML after the maxHtmlBytes cap."
          },
          "maxItemsPerSource": {
            "title": "Maximum Items Per Source",
            "type": "integer",
            "description": "Maximum semantic records emitted from each direct URL, query, or typed source. Status and run-manifest rows are preserved. Use 0 for no per-source cap.",
            "default": 0,
            "minimum": 0,
            "maximum": 5000,
            "prefill": 0
          },
          "searchDiscovery": {
            "title": "Search Discovery",
            "type": "string",
            "editor": "select",
            "enum": [
              "relatedOnly",
              "bestEffortIndex",
              "off"
            ],
            "enumTitles": [
              "Related questions only (no third-party engine)",
              "Best-effort DuckDuckGo index",
              "Disabled"
            ],
            "default": "relatedOnly",
            "prefill": "relatedOnly",
            "description": "How searchQueries are handled. relatedOnly attempts Quora's public search and otherwise emits search_unavailable; bestEffortIndex queries a public web index for indexed Quora URLs. Native Quora search is never claimed."
          },
          "maxRelatedQuestions": {
            "title": "Maximum Related Questions",
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "default": 20,
            "prefill": 0,
            "description": "Related questions to enqueue per question/topic seed. The page usually exposes 26-35; zero disables related-question discovery."
          },
          "searchResultsPerQuery": {
            "title": "Search Results per Query",
            "type": "integer",
            "minimum": 0,
            "maximum": 50,
            "default": 10,
            "prefill": 0,
            "description": "Maximum indexed URLs to use per search query when searchDiscovery=bestEffortIndex."
          },
          "maxAnswerPages": {
            "title": "Maximum Answer GraphQL Pages",
            "type": "integer",
            "minimum": 0,
            "maximum": 50,
            "default": 0,
            "prefill": 0,
            "description": "Bound QuestionPagedListPaginationQuery pages. Zero derives a bound from maxAnswersPerQuestion."
          },
          "maxTopicFeedPages": {
            "title": "Maximum Topic Feed Pages",
            "type": "integer",
            "minimum": 0,
            "maximum": 20,
            "default": 3,
            "prefill": 0,
            "description": "Bound topic-feed GraphQL pages when includeTopicFeed is enabled."
          },
          "maxSpaceFeedBundles": {
            "title": "Maximum Space Feed Bundles",
            "type": "integer",
            "minimum": 0,
            "maximum": 20,
            "default": 4,
            "prefill": 1,
            "description": "Bound Space feed bundles read from the SSR multifeed."
          },
          "includeCommentReplies": {
            "title": "Include Comment Replies",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Include nested repliesConnection rows. Requires includeComments. Comments are robots-sensitive and opt-in; zero-row/blocked results produce a status row."
          },
          "includeQuoraPlusPreview": {
            "title": "Include Quora+ Preview Answers",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Emit preview-only answers flagged answer_is_quora_plus/answer_text_completeness=preview. The gated remainder is never fetched or presented as full text."
          },
          "includeProfileStats": {
            "title": "Include Profile Stats",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Emit follower/following/answer/question/post/view counts, joined date, credentials and expertise topics for profile rows."
          },
          "includeTopicStats": {
            "title": "Include Topic Stats",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Emit topic follower count and most-viewed authors for topic rows."
          },
          "includeSpaceStats": {
            "title": "Include Space Stats",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Emit Space follower/member/contributor/moderator/admin counts, description, icon and cover."
          },
          "includePostStats": {
            "title": "Include Post Stats",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Emit post upvotes/views/shares/comments, effective access and question-summary flag."
          },
          "includeAnswerStats": {
            "title": "Include Answer Stats",
            "type": "boolean",
            "default": true,
            "prefill": true,
            "description": "Emit answer counters, dates, AI flag, effective access and Quora+ preview flags."
          },
          "includeTopicFeed": {
            "title": "Include Topic Feed",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Opt into the browser topic-feed GraphQL endpoint. robots-sensitive: keep off unless you accept that compliance caveat."
          },
          "includeQuestionAudit": {
            "title": "Include Question Audit",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Opt into the public question /log page to fill question_created_at, question_view_count and the asker fields. robots.txt disallows /*/log for generic agents; the actor never includes this in the default prefill."
          },
          "includeProfileHistory": {
            "title": "Include Profile History",
            "type": "boolean",
            "default": false,
            "prefill": false,
            "description": "Opt into the public profile answer/question tab GraphQL and emit bounded profile_activity rows. robots-sensitive and rate-sensitive; on a 400/403 the run keeps a profile_history_unavailable status row."
          },
          "maxProfileHistoryPages": {
            "title": "Maximum Profile History Pages",
            "type": "integer",
            "minimum": 0,
            "maximum": 20,
            "default": 0,
            "prefill": 0,
            "description": "Bound for each profile history list (answers and questions) when includeProfileHistory is enabled. Zero derives three pages; one page is roughly ten items."
          },
          "maxRelationshipPages": {
            "title": "Maximum Identity List Pages",
            "type": "integer",
            "minimum": 0,
            "maximum": 20,
            "default": 3,
            "prefill": 0,
            "description": "Bound for each public identity-list query (question followers, answer upvoters, profile followers/following, Space roles) after the relationship allowlist and privacy gates. Zero is treated as one page."
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Quora Question, Answer & Relationship Dataset Builder Output",
        "description": "Normalized Quora questions, answers, comments, profiles, Spaces, relationship edges, status rows, and a run manifest.",
        "type": "object",
        "properties": {
          "results": {
            "type": "string",
            "title": "Results",
            "description": "All records from the run, in the default dataset.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "readme": "# Quora Question, Answer & Relationship Dataset Builder\n\nBuild a structured Quora dataset from direct links or best-effort search discovery. Point it at question, answer, profile, Topic, Space, or Post URLs and it returns normalized rows for every entity it finds, with the question → answer → comment chain and author/topic links kept intact. Choose how deep to go, how the rows are shaped, and which relationship or feed data to include.\n\nThis is an independent, third-party actor. It is not affiliated with, endorsed by, or licensed by Quora, Inc. No Quora account, login, session cookie, or paid proxy is used or required.\n\n## What this actor does\n\n- Accepts question, answer, profile, Topic, Space, and Post URLs directly, plus best-effort search discovery. Typed seed lists (`questionUrls`, `answerUrls`, `topicUrls`, `spaceUrls`, `profileUrls`, `postUrls`) override route auto-detection.\n- Empty fields are omitted; a missing field means the source did not expose it, never `null` or a sentinel.\n- Parses Quora's server-rendered Relay payloads and double-decodes the `window.ansFrontendGlobals.data.inlineQueryResults` `.push()` strings; it does not depend on CSS classes or DOM selectors for the core fields.\n- Paginates question answers with Quora's public `QuestionPagedListPaginationQuery` cursor, up to `maxAnswersPerQuestion` / `maxAnswers` / `maxAnswerPages`. Every paginated answer is checked against the page question (title/path, `linkedQuestion`, `originalQuestionIfDifferent`, and the answer permalink), so unrelated promoted answers cannot become dataset rows while legitimate merged variants still pass.\n- Paginates comment areas and nested replies through `AllCommentsListQuery` (10+ pages with `after` cursors), with `maxCommentsPerAnswer` as the hard cap; this is opt-in and robots-sensitive.\n- Optionally reads a Topic feed, a Space SSR multifeed, profile statistics, Topic statistics, and Post metrics.\n- Optionally reads the public question `/log` audit for created time, view count, and asker identity (`includeQuestionAudit`), and paginates profile answer/question history (`includeProfileHistory`).\n- Optionally resolves public identity lists for question followers, answer upvoters, profile followers/following, and Space roles through explicitly requested relationship types and the sensitive-data gate.\n- Walks the question → answer → comment chain and keeps the links between them (`entity_edge` rows), so you can rebuild the conversation tree.\n- Offers four output shapes via `outputFormat`: `normalized` (separate rows per entity, default), `nested` (answers grouped under their question, comments under their answer), `flat`, and `edges` (relationship rows plus any status rows).\n- Reports a `status` row (rather than guessing) whenever a page is blocked, login-gated, removed, or otherwise inaccessible, and a `run_manifest` row summarizing the whole run.\n- Leaves empty content fields out of each row rather than filling them with a guess. `0` and `false` are kept as real values.\n- Never emits cookie/credential material. URLs are redacted when `redactSensitiveQueryParams` is on.\n\n## Output per record\n\nEvery row carries `content_type` (`question`, `answer`, `comment`, `profile`, `profile_activity`, `topic`, `topic_post`, `space`, `space_feed_item`, `entity_edge`, `relationship_collection`, `status`, or `run_manifest`), plus shared fields: `record_id`, `title`, `url`, `canonical_url`, `source_url`, `access_state`, `scrape_timestamp`, `requested_depth`, `observed_depth`, `detail_expansion_state`, `output_format`, `matched_input`, `matched_input_kind`, and (when search seeds were used) `source_query`/`source_queries`.\n\nEvery row also carries run-context fields describing how it was collected: `source_observations`/`source_observation_count`, `redirect_chain`, `url_redaction_state`/`url_redactions`, `proxy_used`, `proxy_path_used`, `proxy_resolution_state`, `session_cookie_count`, `session_input_state`, `session_cookie_expiry_state`, `request_delay_seconds`, `browser_locale`, `requested_language`, `navigation_retries`/`navigation_retry_delays_seconds`, `parser_version` and `parser_strategy`. With `includeFieldEvidence` on (default), rows also get `field_sources` (where each value came from) and `fields_present`.\n\n`access_state` is `public` for normal pages. Other values include `login_required`, `cloudflare_challenge`, `rate_limited`, `not_found`, `removed`, `unavailable`, `quora_plus_or_gated`, `quora_plus_preview`, `redirected_to_search`, `unsupported_url`, `search_unavailable`, `answer_pagination_limited`, `answer_pagination_unavailable`, `comments_unavailable`, `comments_capped`, `topic_feed_unavailable`, `topic_feed_capped`, `space_feed_capped`, `profile_history_limited`, `profile_history_unavailable`, `question_audit_unavailable`, `relationship_identity_unavailable`, `relationship_identity_capped`, `relationship_identities_not_observed`, `state_store_unavailable`, `state_store_uncommitted` and `network_error`.\n\n**Question row** — `question_url`, `question_id`, `question_answer_count` (label) / `question_answer_count_value` (parsed number) / `question_answer_count_scraped` (rows actually collected), `question_follower_count` / `question_follower_count_value` (when the public payload exposes it), `related_questions` (`qid`, `title`, `url`), `question_created_at`, `question_updated_at`, `question_view_count`, `question_audit_state`, `question_merge_count`, `question_age_days`/`question_age_state`, `last_answered_at` + `last_answered_at_evidence`, `question_author_name`/`_url`/`_image_url`/`_id`/`_is_verified`/`_is_anonymous`/`_credentials` (from a visible author card or the opt-in `/log` audit), `question_image_urls`/`_video_urls`/`_outbound_links` (opt-in), `answer_count`, `answer_limit_reached`, `topics`, `topic_links`.\n\n**Answer row** — `answer_id`, `answer_node_id`, `answer_url`, `answer_text`, `answer_html` (opt-in, derived from rich text), `answer_media_urls`/`_image_urls`/`_video_urls`/`_outbound_links` (opt-in), `answer_translation_state`/`_label`, `answer_original_url`, `answer_is_anonymous`, `answer_author_is_verified`, `answer_author_follower_count` (when present), `answer_created_at`/`_updated_at`, `answer_age_days`/`_state`, `answer_visibility`, `answer_text_completeness`, `answer_is_collapsed`, `answer_is_quora_plus`, `answer_access_option`, `answer_effective_access`, `answer_is_top_labeled`, `answer_rank`/`_rank_source`, `answer_upvote_count`/`_value`, `answer_comment_count`/`_value`, `answer_view_count`/`_value`, `answer_share_count`/`_value`, `reaction_breakdown` (opt-in), `is_ai_answer`/`ai_label_text`/`ai_label_source`, `related_content`/`_count`/`_observed_count`/`_limit_reached` (opt-in), `answer_jsonld_type`, `author_name`/`_url`/`_image_url`/`_id`/`_credentials`.\n\n**Comment row** — `comment_id`, `comment_url`, `comment_text`, `comment_source` (`graphql_comment_area`), `comment_author_name`/`_image_url`/`_id`/`_credentials`/`_is_verified`, `comment_is_anonymous`, `comment_timestamp`/`_created_at`, `comment_age_days`/`_state`, `comment_visibility`, `comment_upvote_count`/`_value`, `comment_reaction_count`/`_value`, `comment_reply_count`/`_value`, `comment_reaction_breakdown`, `comment_media_urls`/`_image_urls`/`_video_urls`/`_outbound_links`, `comment_is_top_labeled`, `comment_rank`/`_rank_source`, `comment_sort_order`, `comment_depth`, `comment_depth_limit_reached`, `comment_is_reply`, `parent_comment_id`/`_url`, `comment_reply_path`, `comment_container_id`, `comment_items_observed_count`/`_emitted_count`, `comment_limit_reached`, `comment_page_limited`.\n\n**Profile row** — `profile_url`, `profile_name`, `profile_bio`, `profile_image_url`, `profile_author_id`, `profile_is_verified`, `profile_is_restricted`, `profile_account_status`, `profile_is_anonymous`, `profile_is_deceased`, `profile_snapshot_state`, plus `profile_follower_count`, `profile_following_count`, `profile_answer_count`, `profile_question_count`, `profile_post_count`, `profile_total_content_views`, `profile_month_content_views`, `profile_joined_at`, `profile_credential`, `profile_work_credentials`, `profile_school_credentials`, `profile_location_credentials`, `profile_expertise_topics`, `profile_history_limited` when the visible feed is truncated or the opt-in history is capped, and `profile_history_state` (`not_requested`/`observed`/`capped`/`rate_limited`/`unavailable`/`empty`) when history is requested.\n\n**Profile-activity row** — `activity_url`, `activity_type`, `activity_source`, `activity_question_url`/`_title`/`_id`, `activity_answer_id`, `created_at`, `author_name`/`_url`/`_image_url`/`_id`/`_credentials`.\n\n**Topic row** — `topic_url`, `topic_id`, `topic_follower_count`, `topic_most_viewed_authors` (`uid`, `name`, `url`, `follower_count`, `num_views`, `num_public_most_viewed_answers`, `credential`), `topic_photo_url`, `topic_default_photo_url`, `topic_has_leaderboard`, and `topic_feed_state` (`not_requested`/`observed`/`capped`/`unavailable`).\n\n**Topic-Post row** — `post_url`, `post_pid`, `post_node_id`, `post_title` (explicit title or first content line), `post_body`, `post_media_urls`/`_image_urls`/`_video_urls`/`_outbound_links` (opt-in), `post_author_name`/`_url`/`_image_url`/`_id`/`_credentials`/`_is_verified`/`_is_anonymous`/`_follower_count`, `post_question_url`/`_title`, `topic_url`, `post_created_at`/`_updated_at`, `post_age_days`/`_state`, `post_updated_age_days`/`_state`, `post_upvote_count`, `post_view_count`, `post_share_count`, `post_comment_count`, `post_effective_access`, `post_is_question_summary`.\n\n**Space row** — `space_url`, `space_id`, `space_follower_count`, `space_all_time_followers` (conditional), `space_member_count`, `space_contributor_count`, `space_moderator_count`, `space_admin_count`, `space_description`, `space_icon_url`, `space_cover_url`, `space_item_count`, `space_feed_capped`, `space_ads_skipped`.\n\n**Space feed-item row** — `feed_url`, `feed_type`, `feed_title`, `feed_text` (opt-in), `feed_post_pid`/`feed_post_node_id` (post stories), `feed_author_name`/`_url`/`_image_url`/`_id`/`_credentials`/`_is_verified`/`_is_anonymous`, `feed_created_at`, `feed_age_days`/`_state`, `feed_upvote_count`, `feed_view_count`, `feed_share_count`, `feed_comment_count`, `feed_effective_access`, `feed_is_ai_answer`, `feed_question_url`/`_title`, `media_urls`/`image_urls`/`video_urls`/`outbound_links` (opt-in).\n\n**Relationship row (`entity_edge`)** — `relationship`, `edge_id`, `from_record_id`/`_content_type`/`_url`/`_id`, `to_record_id`/`_content_type`/`_url`/`_id`/`_name`/`_image_url`, `node_image_url`, `edge_state`, `unresolved_reason`, `edge_evidence_field`, `relationship_collection_key`, `collection_total_text`/`_value`.\n\n**Relationship-count row (`relationship_collection`)** — `relationship_collection_key`, `collection_total_text`, `collection_total_value`, `edge_evidence_field`.\n\n**Status row** — `access_state`, `http_status`, `error`, `source_url`, and for pages that failed to load `final_url`, `scrape_duration_ms`, `navigation_attempts`, `navigation_retries`. Run-level status rows (`url: run://quora-dataset-builder`) report a state store that could not be read (`state_store_unavailable`), state that was not saved because a source did not finish (`state_store_uncommitted`), or a run that produced no real rows (`no_records_emitted`).\n\n**Option-dependent fields** — with a `stateStoreId`, entity rows add `event_type` (`new`/`changed`/`unchanged`/`scope_mismatch`), `state_snapshot_hash`, `previous_snapshot_hash`, `state_scope_fingerprint`, `state_store_state`, `only_new_items`, `include_unchanged`. With `includeRawEvidence`, page-level rows add `raw_html_sha256`, `raw_html_bytes`, `raw_html_truncated`, `raw_html_returned_bytes`, `raw_html_redaction_state`, `raw_html_redactions`, `raw_evidence_state`, `raw_evidence_retention_days`, plus `raw_html` when `includeHtml` is also on and `rawEvidenceRetentionDays` is above zero. In `nested` format, question rows carry `answers` arrays (each answer with its `comments`) and `nested_*` count fields. With `maxItemsPerSource` set, rows add `max_items_per_source` and per-source cap fields.\n\n**Run-manifest row** — one per run, summarizing counts and the settings actually applied: `run_started_at`/`_finished_at`/`_duration_ms`, `records_emitted`, `source_pages_attempted`, `content_type_counts`, `access_state_counts`, `input_accounting`, `requested_result_types`, `requested_output_fields`, `dedupe_mode`, `duplicate_records_suppressed`, `proxy_path_used`, `proxy_resolution_state`, `search_discovery_source`, `search_discovery_hits`, `answer_gql_pages`, `answer_pagination_state`, `answer_pagination_unrelated_suppressed`, `comment_gql_pages`, `topic_feed_pages`, `space_feed_bundles`, `quora_plus_preview_count`, `comment_cap_hit_count`, `topic_feed_cap_hit_count`, `profile_history_pages`, `profile_history_state`, `relationship_identity_pages`, `relationship_identity_requests`, `relationship_identity_states`, `question_audit_state`, `question_audit_attempts`, `legacy_input_notes`, `hard_limits`, `gql_calls`, `query_hashes`, and the per-run values of your own input settings echoed back for reconciliation.\n\n## Trimming rows, depth, sessions and caps\n\n- **Field allowlist.** `outputFields` keeps only the fields you name, applied after extraction; an empty list returns the full row. Nested projection is supported with dotted paths such as `answers.answer_text` or `answers.comments.comment_text` in `nested` output. Child identity/URL fields stay in place, and `content_type`, identity, access/status, depth, timing and parser fields are always protected so a trimmed row can still be traced. `output_projection` on each row reads `full` or `selected`, and the run manifest records the requested fields. `includeFieldEvidence` toggles the `field_sources`/`fields_present` maps.\n- **Depth.** `scrapeDepth: \"detail\"` (default) runs the capped traversal; `overview` emits page-level summaries without answer, comment, profile-activity or Space-feed expansion. Every row reports `requested_depth`, `observed_depth` and `detail_expansion_state`. `bounded` means a configured cap was reached, not that Quora's full history was collected, and blocked pages report `observed_depth: \"status\"`.\n- **Caps.** `maxAnswersPerQuestion` bounds each question, `maxAnswers` is a global answer cap, `maxAnswerPages` bounds GraphQL pages explicitly, `maxItems` caps entity/status rows before graph/manifest rows, `maxItemsPerSource` caps each source, and `maxGraphEdges` caps relationship rows. When `maxItems`/`maxGraphEdges` is 0 the corresponding cap is off. `maxRelationshipItemsPerCollection` bounds each labeled relationship collection, `maxRelationshipPages` bounds each public identity-list query, and `maxProfileHistoryPages` bounds each profile answer/question list. `answer_pagination_limited` is emitted only when a configured page cap or a GraphQL rate limit stopped pagination; an exhausted source is not reported as a cap.\n- **Comments.** Set `includeComments: true`. When `maxCommentsPerAnswer` is 0, the documented fallback is 10 per answer. The actor calls `AllCommentsListQuery` with `after` cursors and a page size derived from your cap (up to 50), so a 24-comment answer is collected as 10 + 10 + 4 when the server pages at ten. `includeCommentReplies` (or `includeReplyGraph`) expands nested replies up to `maxCommentDepth`; `comment_page_limited` is set only when a cap is actually hit, and a `comments_capped` status row follows. If the paginated query fails, the actor falls back to the first-page loader rather than inventing rows. Comments use Quora's comment-area GraphQL, which `robots.txt` disallows for generic agents: keep this opt-in and review your own compliance posture.\n- **Topic feed.** Set `includeTopicFeed: true` to call the topic page's own public GraphQL feed. `maxTopicFeedPages` bounds pages. This path is also robots-sensitive; keep it opt-in.\n- **Question audit.** `includeQuestionAudit: true` reads the question's public `/log` page for `question_created_at`, `question_view_count`, `question_merge_count`, and the asker name/uid/profile/credential. It retries a transient 403 once, then keeps `question_audit_state: \"unavailable\"` and a `question_audit_unavailable` status row. `/log` is robots-disallowed for generic agents and is never part of the daily prefill.\n- **Profile history.** `includeProfileHistory: true` paginates `UserProfileAnswersMostRecent_RecentAnswers_Query` and `UserProfileQuestionsList_Questions_Query` and emits bounded `profile_activity` rows. `maxProfileHistoryPages` (default 0 = three pages per list) and `requestDelay` (used as a 1.5–2.5 s GraphQL pace when above zero) bound the work. A cap sets `profile_history_limited`; a 400/403 sets `profile_history_state: \"rate_limited\"` and a `profile_history_unavailable` status row instead of fabricated rows.\n- **Identity lists.** Identity rows are emitted only when `relationshipTypes` explicitly requests them, the matching family flag is on, and `includeSensitiveRelationshipData` is on for sensitive types. The public GraphQL operations cover profile followers/following people/questions/Spaces/Topics, question followers, answer upvoters, and Space admins/contributors/moderators/followers. `maxRelationshipItemsPerCollection` and `maxRelationshipPages` bound every list; Space role calls run from a `www.quora.com` page context. These lists are robots-sensitive and rate-sensitive; a failure keeps a `relationship_identity_unavailable` or `relationship_identities_not_observed` status row, and a page/item cap adds `relationship_identity_capped`.\n- **Sessions and proxies.** No account, login, cookie, or session secret is used. The transport ladder is direct (`curl_cffi`, fresh session per attempt) → optional user proxy override → Apify AUTO datacenter → RESIDENTIAL only as a hardcoded last resort after the free rungs fail. A missing `proxyConfiguration` never stops the run, and there is no paid default. `proxy_path_used` reports the rung that worked.\n- **Exact field names.** Every output field this actor can emit is listed under [Output per record](#output-per-record) above. Fields whose source is absent on a given page are omitted, not set to null or a sentinel.\n\n## Complete schema input inventory\n\nEvery input is optional. The daily prefill uses one public question URL with a small answer cap, comments and feeds off, and no paid proxy.\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `auto` | `auto` / `byQuestionUrls` / `byAnswerUrls` / `byProfileUrls` / `byTopicUrls` / `bySpaceUrls` / `byPostUrls` / `search`; typed modes validate seed routes |\n| `scrapeDepth` | string | `detail` | `overview` (page-level summary only) or `detail` (full capped traversal) |\n| `startUrls` | array | `[]` | Question, answer, profile, Topic, Space, or Post URLs; mixed lists are auto-detected and invalid hosts become status rows |\n| `searchQueries` | array | `[]` | Best-effort discovery terms; Quora's native search is login/Cloudflare-gated and is never claimed |\n| `questionUrls` | array | `[]` | Typed question seeds |\n| `answerUrls` | array | `[]` | Typed answer-permalink seeds |\n| `topicUrls` | array | `[]` | Typed Topic seeds |\n| `spaceUrls` | array | `[]` | Typed Space seeds; automatically enables Space output |\n| `profileUrls` | array | `[]` | Typed profile seeds |\n| `postUrls` | array | `[]` | Typed standalone Post seeds |\n| `resultTypes` | array | `[\"question\",\"answer\",\"comment\",\"profile\",\"profile_activity\",\"topic\",\"topic_post\",\"space\",\"space_feed_item\",\"entity_edge\",\"status\",\"run_manifest\"]` | Which `content_type` values to include |\n| `outputFormat` | string | `normalized` | `normalized` / `nested` / `flat` / `edges` |\n| `dedupeMode` | string | `canonical` | `canonical` (merge duplicate entities by canonical URL/ID) or `none` |\n| `onlyNewItems` | boolean | `false` | With `stateStoreId`, suppress rows unchanged since the last run |\n| `includeUnchanged` | boolean | `true` | Keep unchanged rows when `onlyNewItems` is on |\n| `stateStoreId` | string | - | Apify key-value store name for incremental re-scraping; required when `onlyNewItems` is on |\n| `outputFields` | array | `[]` | Optional field allowlist for smaller rows; identity/status fields are always kept |\n| `includeFieldEvidence` | boolean | `true` | Include `field_sources`/`fields_present` on each row |\n| `includeUnresolvedEdges` | boolean | `true` | Keep relationship rows whose target could not be matched |\n| `relationshipTypes` | array | `[]` | Allowlist of labeled relationship collections to expand (follower, following, want-answers, upvoter, Space role); identity-revealing types also need `includeSensitiveRelationshipData` and the matching family opt-in |\n| `includeProfileEdges` | boolean | `false` | Per-family opt-in for profile follower/following/question/space/topic relationships |\n| `includeQuestionFollowerEdges` | boolean | `false` | Per-family opt-in for question follower/want-answer identities (sensitive) |\n| `includeAnswerUpvoterEdges` | boolean | `false` | Per-family opt-in for answer upvoter identities (requires `includeSensitiveRelationshipData`) |\n| `includeSensitiveRelationshipData` | boolean | `false` | Privacy gate required for identity-revealing relationship collections |\n| `includeTargetMetadata` | boolean | `false` | Keep the visible name/image of each relationship target |\n| `includeRelationshipCounts` | boolean | `false` | Emit privacy-preserving member-count rows; also add `relationship_collection` to `resultTypes` |\n| `includeSpaceRoleEdges` | boolean | `false` | Keep Space contributor/moderator/admin edges |\n| `includeSpaceContentEdges` | boolean | `true` | Keep Space to post/question membership edges and feed-item membership |\n| `maxRelationshipItemsPerCollection` | integer | `500` | Cap per labeled relationship collection |\n| `maxQuestions` | integer | `25` | How many discovered question links get queued on top of your own seed URLs |\n| `maxAnswersPerQuestion` | integer | `10` | Maximum answer rows kept per question after SSR and GraphQL pagination |\n| `maxAnswers` | integer | `0` | Global answer cap across the whole run (`0` = no cap) |\n| `includeQuestion` | boolean | `true` | Keep question entities in the output |\n| `includeAuthor` | boolean | `true` | Keep author/profile entities and author fields in the output |\n| `includeAuthorSnapshot` | boolean | `false` | Fetch a bounded profile snapshot for each visible answer author |\n| `includeTopics` | boolean | `true` | Keep topic entities and topic links |\n| `includeSpaces` | boolean | `false` | Keep Space and Space feed-item rows; switched on automatically when a Space URL is used in `startUrls` or `spaceUrls` |\n| `includeComments` | boolean | `false` | Opt-in comment rows with `AllCommentsListQuery` cursor pagination; robots-sensitive |\n| `includeEngagementBreakdown` | boolean | `true` | Include per-reaction breakdowns alongside aggregate counts |\n| `includeRelatedContent` | boolean | `false` | Collect explicitly attached answer related-content links when Quora's public payload exposes them; otherwise they are omitted |\n| `maxRelatedContent` | integer | `20` | Bound related-content links per answer when enabled; zero emits no related-content items |\n| `topCommentsOnly` | boolean | `false` | Keep only comments explicitly labeled Top/Most helpful |\n| `commentSortOrder` | string | `observed` | `observed` / `upvotes_desc` / `reactions_desc` / `replies_desc` / `newest` |\n| `includeReplyGraph` | boolean | `false` | Compatibility alias that enables comments and nested replies |\n| `includeMedia` | boolean | `false` | Include image/video URL fields where available |\n| `includeFeedText` | boolean | `false` | Include visible text on Space feed cards |\n| `includeOutboundLinks` | boolean | `false` | Include non-Quora links found in rich text |\n| `includeEntityGraph` | boolean | `false` | Emit relationship rows even when `entity_edge` is not in `resultTypes` |\n| `maxCommentsPerAnswer` | integer | `0` | Comments kept per answer; when comments are on and this is 0, the fallback is 10; the cap is the pagination limit, not a page size |\n| `maxCommentDepth` | integer | `20` | Maximum nested reply depth when replies are enabled; 0 disables replies |\n| `maxItems` | integer | `0` | Cap on entity/status rows before graph and manifest rows (`0` = no cap) |\n| `maxGraphEdges` | integer | `5000` | Cap on relationship rows (`0` = no edges) |\n| `maxScrollAttempts` | integer | `5` | Scroll attempts per page in detail mode |\n| `maxLoadMoreAttempts` | integer | `0` | \"Load more\" button clicks per page |\n| `includeRawEvidence` | boolean | `false` | Attach a document hash and size/redaction metadata for auditing |\n| `includeHtml` | boolean | `false` | Retain bounded raw HTML on page-level rows and derived answer HTML |\n| `maxHtmlBytes` | integer | `100000` | Upper bound for retained or derived HTML |\n| `requestDelay` | number | `1` | Delay in seconds between page batches |\n| `maxConcurrency` | integer | `1` | Independent seeds processed in parallel (values above 3 are treated as 3) |\n| `maxNavigationRetries` | integer | `2` | Retries after a failed page load (max 3) |\n| `language` | string | `auto` | Browser language hint (`en`, `es`, `fr`, ...); not a translation guarantee |\n| `proxyConfiguration` | object | - | Optional proxy override. The free ladder runs first; there is no paid default |\n| `redactSensitiveQueryParams` | boolean | `true` | Redact credential-like query values and fragment credentials from emitted URLs/HTML |\n| `rawEvidenceRetentionDays` | integer | `30` | Retention label for raw HTML evidence; 0 keeps metadata only |\n| `maxRawEvidenceBytes` | integer | `100000` | Size bound for raw HTML evidence |\n| `maxItemsPerSource` | integer | `0` | Cap on records from each individual source URL/query (`0` = no cap) |\n| `searchDiscovery` | string | `relatedOnly` | `relatedOnly` (related questions only) / `bestEffortIndex` (third-party index) / `off` |\n| `maxRelatedQuestions` | integer | `20` | Related questions enqueued per question seed |\n| `searchResultsPerQuery` | integer | `10` | Maximum best-effort index results per query |\n| `maxAnswerPages` | integer | `0` | Explicit answer GraphQL page cap; 0 derives from `maxAnswersPerQuestion` |\n| `maxTopicFeedPages` | integer | `3` | Topic-feed GraphQL page cap when `includeTopicFeed` is on (minimum one page) |\n| `maxSpaceFeedBundles` | integer | `4` | Space feed bundles read from the SSR multifeed |\n| `includeCommentReplies` | boolean | `false` | Expand nested `repliesConnection` comment replies |\n| `includeQuoraPlusPreview` | boolean | `true` | Emit Quora+ preview answers with preview flags; when false, omit them |\n| `includeProfileStats` | boolean | `true` | Emit profile follower/following/answer/question/post/view/joined/credential fields |\n| `includeTopicStats` | boolean | `true` | Emit Topic follower count and most-viewed authors |\n| `includeSpaceStats` | boolean | `true` | Emit Space counters, description, icon and cover |\n| `includePostStats` | boolean | `true` | Emit Post counters, effective access and question-summary flag |\n| `includeAnswerStats` | boolean | `true` | Emit answer counters, dates, AI flag and effective access |\n| `includeTopicFeed` | boolean | `false` | Browser GraphQL Topic feed; opt-in and robots-sensitive |\n| `includeQuestionAudit` | boolean | `false` | Read the public question `/log` for created time, view count, merge count, and asker identity; robots-sensitive opt-in |\n| `includeProfileHistory` | boolean | `false` | Paginate the public profile answer/question tabs into bounded `profile_activity` rows; robots- and rate-sensitive opt-in |\n| `maxProfileHistoryPages` | integer | `0` | Cap per profile history list; 0 derives three pages (about 30 items per list) |\n| `maxRelationshipPages` | integer | `3` | Cap per public identity-list query after the relationship allowlist and privacy gates |\n\n## Example inputs\n\n### Example: full detail for a question\n\n```json\n{\n  \"questionUrls\": [{ \"url\": \"https://www.quora.com/What-is-the-best-way-to-learn-Python\" }],\n  \"maxAnswersPerQuestion\": 20,\n  \"includeComments\": true,\n  \"maxCommentsPerAnswer\": 10\n}\n```\n\n### Example: best-effort search discovery, compact nested output\n\n```json\n{\n  \"searchQueries\": [\"machine learning career advice\"],\n  \"searchDiscovery\": \"relatedOnly\",\n  \"maxQuestions\": 10,\n  \"outputFormat\": \"nested\",\n  \"maxAnswersPerQuestion\": 5\n}\n```\n\n### Example: a Space's content and follower count\n\n```json\n{\n  \"spaceUrls\": [{ \"url\": \"https://www.quora.com/q/example-space\" }],\n  \"resultTypes\": [\"space\", \"space_feed_item\", \"relationship_collection\", \"run_manifest\"],\n  \"includeRelationshipCounts\": true,\n  \"relationshipTypes\": [\"space_has_contributor\"]\n}\n```\n\n### Example: incremental re-scrape of the same question\n\n```json\n{\n  \"questionUrls\": [{ \"url\": \"https://www.quora.com/What-is-the-best-way-to-learn-Python\" }],\n  \"onlyNewItems\": true,\n  \"includeUnchanged\": false,\n  \"stateStoreId\": \"python-question-watch\"\n}\n```\n\n## Use cases\n\n- **Content research** — pull full question-answer-comment threads on a topic for analysis\n- **Community monitoring** — re-scrape the same questions on a schedule and keep only rows flagged `new`/`changed`\n- **Knowledge graph building** — use `outputFormat: \"edges\"` to load the question/answer/topic relationship graph into a graph database\n- **Influencer and expert tracking** — follow a profile's visible answers and its public follower/following/content statistics\n- **Space analysis** — collect a Quora Space's feed, metrics and contributor counts\n\n## FAQ\n\n**Do I need a Quora account?**\nNo. Direct public question, answer, profile, Topic, Space, and Post pages are read without login. The actor never asks for, stores, or emits cookies or session secrets.\n\n**Why did I get a `status` row instead of question/answer data?**\nQuora showed a login wall, Cloudflare challenge, a removed page, or an unsupported redirect for that URL. The actor reports this honestly as a `status` row instead of guessing at data that was not there. A run with zero real rows also gets a `no_records_emitted` status row and a non-success status message.\n\n**Why do I sometimes get fewer answers than `maxAnswersPerQuestion`?**\nThe actor reads the server-rendered answers, filters out answers whose question is provably unrelated, then paginates the public GraphQL cursor up to your cap. If the question genuinely has fewer answers, the cursor stops; you get the answers that were observable and no `answer_pagination_limited` row, because the source was exhausted rather than capped. `answer_pagination_limited` appears only when `maxAnswerPages`/your cap stopped a non-exhausted source or Quora rate-limited a pagination request, and the page's known `answerCount` is not already satisfied; a non-rate GraphQL failure uses `answer_pagination_unavailable`. Neither case fabricates an answer.\n\n**How do I get question created time, view count, or the asker?**\nSet `includeQuestionAudit: true`. The actor reads the public `/<question>/log` page (robots-sensitive, opt-in) and fills `question_created_at`, `question_view_count`, `question_merge_count`, and the `question_author_*` fields. Without it, those fields are omitted rather than guessed. A blocked `/log` leaves `question_audit_state: \"unavailable\"` and a status row.\n\n**How do I get more than the three visible profile history items?**\nSet `includeProfileHistory: true`. The actor paginates the public answer/question tab connections into `profile_activity` rows, bounded by `maxProfileHistoryPages` and paced by `requestDelay`. This GraphQL path is robots- and rate-sensitive; a 400/403 leaves a `profile_history_unavailable` status row and no fabricated rows.\n\n**What is the difference between the four `outputFormat` values?**\n`normalized` keeps every entity as its own row (the default). `nested` groups each question's answers (and each answer's comments) underneath it; rows without a matching parent stay at the top level with an orphan reason. `flat` is like `normalized`, except answer rows also get question context and comment rows get `answer_url`. `edges` returns the relationship rows between entities plus any status rows.\n\n**Can I get a Quora account's followers, question followers, answer upvoters, or Space roles?**\nYes, as explicit opt-ins. Request the relationship type in `relationshipTypes`, turn on the matching family flag (`includeProfileEdges`, `includeQuestionFollowerEdges`, `includeAnswerUpvoterEdges`, or `includeSpaceRoleEdges`), and set `includeSensitiveRelationshipData: true` for follower/upvoter/want-answer types. The actor then calls the public identity-list GraphQL operations, paginates up to `maxRelationshipPages`, and emits only identities whose profile/question/Space/Topic URLs it observed. It may also use visible DOM links as a fallback. These paths are robots- and rate-sensitive; failures produce `relationship_identity_unavailable` or `relationship_identities_not_observed` status rows. It never invents identities.\n\n**What does the incremental re-scrape (`onlyNewItems`) actually compare?**\nIt hashes each entity's semantic content and compares it to the previous run stored under `stateStoreId`, tagging each row `new`, `changed`, `unchanged`, or `scope_mismatch` (the previous run used different settings). Rows are only dropped when `onlyNewItems` is on and `includeUnchanged` is off. Status and manifest rows are never dropped by this setting. If any requested source did not finish, the new state is not saved and a `state_store_uncommitted` status row tells you so.\n\n**Why are some text/media fields missing even with `includeMedia`/`includeHtml` on?**\nThose fields are only populated when Quora's public payload actually contains that content for the entity in question. The toggles request the data; they do not guarantee every entity has it.\n\n**Is search native Quora search?**\nNo. Quora's native `/search?q=` is login/Cloudflare-gated for logged-out clients and is disallowed by `robots.txt`. `searchQueries` uses related-question discovery by default and an optional third-party best-effort index; if no public results are discoverable it emits a `search_unavailable` status row.\n\n**What are the hard limitations?**\nNative Quora search is not available cookielessly: `/search?q=` redirects and the public search GraphQL returns no connection. Quora+ `smart_distribution` answers may be preview/truncated; they are flagged `answer_is_quora_plus` and their observed completeness is reported, and no gated remainder is fabricated. Space all-time views/upvotes/comments are private (tested across ten diverse Spaces), Topic description and question count are absent, and question description is absent. Space `allTimeFollowers` is emitted as `space_all_time_followers` only when the payload carries it (not every Space does).\n\nQuestion created/view/asker, full profile history, comment/reply pagination, and identity lists are technically available through public pages/GraphQL but are **robots-sensitive and/or rate-sensitive opt-ins**; they are off by default and not part of the daily prefill. Be aware that `robots.txt` for generic agents disallows `/` broadly, including `/*_POST`, `/*/log`, `/*/followers`, `/*/following`, and `/*/comments`; product/legal review decides whether to enable those opt-ins. Quora URLs are valid in a browser, but plain HTTP clients can receive a Cloudflare 403 on HEAD/GET; the actor fetches them with TLS impersonation.\n\n**Is this affiliated with Quora?**\nNo. This is an independent, third-party actor that reads public Quora pages; it is not affiliated with or endorsed by Quora, Inc. You are responsible for how you use the data.\n",
      "dockerfile": "./Dockerfile",
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "title": "Quora Dataset Builder Output",
          "views": {
            "overview": {
              "title": "Normalized records",
              "transformation": {
                "fields": [
                  "content_type",
                  "event_type",
                  "state_snapshot_hash",
                  "previous_snapshot_hash",
                  "state_scope_fingerprint",
                  "state_store_state",
                  "state_store_error",
                  "only_new_items",
                  "include_unchanged",
                  "parser_strategy",
                  "parser_version",
                  "field_sources",
                  "fields_present",
                  "final_url",
                  "http_status",
                  "error",
                  "scrape_duration_ms",
                  "navigation_attempts",
                  "navigation_retries",
                  "proxy_resolution_state",
                  "session_input_state",
                  "browser_locale",
                  "navigation_retry_delays_seconds",
                  "records_emitted",
                  "input_accounting",
                  "session_cookie_count",
                  "session_cookie_expiry_state",
                  "run_duration_ms",
                  "proxy_used",
                  "request_delay_seconds",
                  "scrape_timestamp",
                  "requested_result_types",
                  "run_started_at",
                  "run_finished_at",
                  "source_pages_attempted",
                  "content_type_counts",
                  "access_state_counts",
                  "relationship_collection_diagnostic",
                  "manifest_version",
                  "requested_output_fields",
                  "max_concurrency",
                  "navigation_attempts_total",
                  "navigation_retries_total",
                  "raw_evidence_retention_days",
                  "max_raw_evidence_bytes",
                  "redact_sensitive_query_params",
                  "raw_html_redactions",
                  "url_redactions",
                  "date_interpretations",
                  "canonical_url",
                  "redirect_chain",
                  "answer_count",
                  "scroll_attempts",
                  "scroll_state",
                  "load_more_attempts",
                  "load_more_clicks",
                  "load_more_state",
                  "raw_html_redaction_state",
                  "url_redaction_state",
                  "output_format",
                  "output_projection",
                  "answers",
                  "comments",
                  "nested_answer_count",
                  "nested_answer_count_observed",
                  "nested_comment_count",
                  "nested_comment_count_observed",
                  "nested_child_state",
                  "nested_orphan_reason",
                  "requested_depth",
                  "observed_depth",
                  "detail_expansion_state",
                  "title",
                  "question_title",
                  "url",
                  "post_url",
                  "post_pid",
                  "post_node_id",
                  "post_title",
                  "post_author_name",
                  "post_author_url",
                  "post_author_image_url",
                  "post_author_id",
                  "post_author_credentials",
                  "post_author_is_verified",
                  "post_author_is_anonymous",
                  "post_body",
                  "post_media_urls",
                  "post_image_urls",
                  "post_video_urls",
                  "post_outbound_links",
                  "question_media_urls",
                  "question_author_name",
                  "question_author_url",
                  "question_author_image_url",
                  "question_author_id",
                  "question_author_is_verified",
                  "question_author_is_anonymous",
                  "question_author_credentials",
                  "question_image_urls",
                  "question_video_urls",
                  "question_outbound_links",
                  "post_created_at",
                  "post_updated_at",
                  "post_updated_age_days",
                  "post_updated_age_state",
                  "post_age_days",
                  "post_age_state",
                  "relationship",
                  "record_id",
                  "access_state",
                  "from_record_id",
                  "to_record_id",
                  "from_id",
                  "to_id",
                  "to_name",
                  "to_image_url",
                  "node_image_url",
                  "relationship_collection_key",
                  "collection_total_text",
                  "collection_total_value",
                  "edge_evidence_field",
                  "unresolved_reason",
                  "source_query",
                  "source_kind",
                  "source_queries",
                  "matched_input",
                  "matched_input_kind",
                  "source_observations",
                  "source_observation_count",
                  "question_url",
                  "question_answer_count",
                  "question_answer_count_value",
                  "question_answer_count_scraped",
                  "question_id",
                  "question_created_at",
                  "question_age_days",
                  "question_age_state",
                  "question_updated_at",
                  "question_view_count",
                  "question_audit_state",
                  "question_merge_count",
                  "last_answered_at",
                  "last_answered_at_evidence",
                  "answer_id",
                  "answer_node_id",
                  "answer_url",
                  "answer_text",
                  "answer_html",
                  "answer_media_urls",
                  "answer_image_urls",
                  "answer_video_urls",
                  "answer_outbound_links",
                  "answer_translation_state",
                  "answer_translation_label",
                  "answer_original_url",
                  "answer_is_anonymous",
                  "answer_author_is_verified",
                  "answer_author_credentials",
                  "answer_author_image_url",
                  "answer_updated_at",
                  "answer_created_at",
                  "answer_age_days",
                  "answer_age_state",
                  "answer_visibility",
                  "answer_text_completeness",
                  "answer_is_collapsed",
                  "answer_is_quora_plus",
                  "answer_is_top_labeled",
                  "answer_rank_source",
                  "answer_upvote_count",
                  "answer_upvote_count_value",
                  "answer_comment_count",
                  "answer_comment_count_value",
                  "answer_view_count",
                  "answer_view_count_value",
                  "answer_share_count",
                  "answer_share_count_value",
                  "reaction_breakdown",
                  "is_ai_answer",
                  "ai_label_text",
                  "ai_label_source",
                  "related_content",
                  "related_content_count",
                  "related_content_observed_count",
                  "related_content_limit_reached",
                  "answer_jsonld_type",
                  "answer_rank",
                  "answer_limit_reached",
                  "edge_id",
                  "from_url",
                  "to_url",
                  "comment_id",
                  "comment_url",
                  "comment_text",
                  "comment_author_name",
                  "comment_author_url",
                  "comment_author_image_url",
                  "comment_author_id",
                  "comment_author_credentials",
                  "comment_author_is_verified",
                  "comment_is_anonymous",
                  "comment_timestamp",
                  "comment_created_at",
                  "comment_age_days",
                  "comment_age_state",
                  "comment_visibility",
                  "comment_upvote_count",
                  "comment_depth",
                  "comment_depth_limit_reached",
                  "comment_items_observed_count",
                  "comment_items_emitted_count",
                  "comment_limit_reached",
                  "comment_media_urls",
                  "comment_image_urls",
                  "comment_video_urls",
                  "comment_outbound_links",
                  "comment_collection_label",
                  "comment_is_top_labeled",
                  "comment_filter_top_only",
                  "comment_filter_observed",
                  "comment_filter_emitted",
                  "comment_filter_unknown",
                  "comment_rank",
                  "comment_rank_source",
                  "comment_sort_order",
                  "comment_sort_observed",
                  "comment_sort_fallback_count",
                  "comment_reaction_count",
                  "comment_reaction_count_value",
                  "comment_reply_count",
                  "comment_reply_path",
                  "parent_comment_id",
                  "parent_answer_url",
                  "parent_comment_url",
                  "comment_is_reply",
                  "comment_reaction_breakdown",
                  "comment_upvote_count_value",
                  "comment_reply_count_value",
                  "profile_url",
                  "profile_name",
                  "profile_bio",
                  "profile_image_url",
                  "profile_jsonld_type",
                  "profile_author_id",
                  "profile_is_verified",
                  "profile_is_restricted",
                  "profile_snapshot_requested",
                  "topic_url",
                  "space_url",
                  "feed_url",
                  "feed_type",
                  "feed_post_pid",
                  "feed_post_node_id",
                  "feed_title",
                  "feed_text",
                  "feed_author_name",
                  "feed_author_url",
                  "feed_author_image_url",
                  "feed_author_id",
                  "feed_author_credentials",
                  "feed_author_is_verified",
                  "feed_author_is_anonymous",
                  "feed_created_at",
                  "feed_age_days",
                  "feed_age_state",
                  "media_urls",
                  "image_urls",
                  "video_urls",
                  "outbound_links",
                  "activity_url",
                  "activity_type",
                  "activity_source",
                  "activity_question_url",
                  "activity_question_title",
                  "activity_question_id",
                  "activity_answer_id",
                  "author_name",
                  "author_url",
                  "author_image_url",
                  "author_id",
                  "author_credentials",
                  "topics",
                  "topic_links",
                  "created_at",
                  "timestamp",
                  "include_unresolved_edges",
                  "include_field_evidence",
                  "include_engagement_breakdown",
                  "include_entity_graph",
                  "profile_snapshot_state",
                  "global_answer_cap_reached",
                  "answers_observed_before_global_cap",
                  "answers_suppressed_by_global_cap",
                  "dedupe_mode",
                  "duplicate_records_suppressed",
                  "raw_html_bytes",
                  "raw_html_returned_bytes",
                  "raw_html_truncated",
                  "raw_evidence_state",
                  "raw_html",
                  "raw_html_sha256",
                  "max_items_per_source",
                  "source_cap",
                  "source_items_observed",
                  "source_items_emitted",
                  "source_cap_reached",
                  "source_url",
                  "from_content_type",
                  "to_content_type",
                  "edge_state",
                  "requested_language",
                  "max_answers_per_question",
                  "max_answers_total",
                  "recordType",
                  "scrapedAt",
                  "sourceUrl",
                  "question_follower_count",
                  "question_follower_count_value",
                  "related_questions",
                  "answer_author_follower_count",
                  "answer_access_option",
                  "answer_effective_access",
                  "answer_original_question_url",
                  "answer_original_question_title",
                  "profile_follower_count",
                  "profile_following_count",
                  "profile_answer_count",
                  "profile_question_count",
                  "profile_post_count",
                  "profile_total_content_views",
                  "profile_month_content_views",
                  "profile_joined_at",
                  "profile_credential",
                  "profile_work_credentials",
                  "profile_school_credentials",
                  "profile_location_credentials",
                  "profile_expertise_topics",
                  "profile_account_status",
                  "profile_is_anonymous",
                  "profile_is_deceased",
                  "profile_history_limited",
                  "profile_history_state",
                  "topic_id",
                  "topic_name",
                  "topic_follower_count",
                  "topic_most_viewed_authors",
                  "topic_photo_url",
                  "topic_default_photo_url",
                  "topic_has_leaderboard",
                  "topic_feed_state",
                  "space_id",
                  "space_name",
                  "space_follower_count",
                  "space_all_time_followers",
                  "space_member_count",
                  "space_contributor_count",
                  "space_moderator_count",
                  "space_admin_count",
                  "space_description",
                  "space_icon_url",
                  "space_cover_url",
                  "space_item_count",
                  "space_feed_capped",
                  "space_ads_skipped",
                  "feed_upvote_count",
                  "feed_view_count",
                  "feed_share_count",
                  "feed_comment_count",
                  "feed_effective_access",
                  "feed_is_ai_answer",
                  "feed_question_url",
                  "feed_question_title",
                  "post_upvote_count",
                  "post_view_count",
                  "post_share_count",
                  "post_comment_count",
                  "post_effective_access",
                  "post_is_question_summary",
                  "post_author_follower_count",
                  "post_question_url",
                  "post_question_title",
                  "comment_source",
                  "comment_page_limited",
                  "comment_container_id",
                  "proxy_path_used",
                  "search_discovery_source",
                  "search_discovery_hits",
                  "answer_gql_pages",
                  "comment_gql_pages",
                  "topic_feed_pages",
                  "space_feed_bundles",
                  "quora_plus_preview_count",
                  "comment_cap_hit_count",
                  "topic_feed_cap_hit_count",
                  "profile_history_pages",
                  "relationship_identity_pages",
                  "relationship_identity_requests",
                  "question_audit_attempts",
                  "answer_pagination_state",
                  "answer_pagination_unrelated_suppressed",
                  "relationship_identity_states",
                  "gql_calls",
                  "query_hashes",
                  "legacy_input_notes",
                  "hard_limits",
                  "proxy_errors"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "content_type": {
                    "label": "Type",
                    "format": "text"
                  },
                  "event_type": {
                    "label": "Incremental event",
                    "format": "text"
                  },
                  "state_snapshot_hash": {
                    "label": "Current state hash",
                    "format": "text"
                  },
                  "previous_snapshot_hash": {
                    "label": "Previous state hash",
                    "format": "text"
                  },
                  "state_scope_fingerprint": {
                    "label": "State scope fingerprint",
                    "format": "text"
                  },
                  "state_store_state": {
                    "label": "State store",
                    "format": "text"
                  },
                  "state_store_error": {
                    "label": "State store error",
                    "format": "text"
                  },
                  "only_new_items": {
                    "label": "Only new items",
                    "format": "boolean"
                  },
                  "include_unchanged": {
                    "label": "Include unchanged",
                    "format": "boolean"
                  },
                  "parser_strategy": {
                    "label": "Parser strategy",
                    "format": "text"
                  },
                  "parser_version": {
                    "label": "Parser version",
                    "format": "text"
                  },
                  "field_sources": {
                    "label": "Field sources",
                    "format": "json"
                  },
                  "fields_present": {
                    "label": "Fields present",
                    "format": "json"
                  },
                  "final_url": {
                    "label": "Final URL",
                    "format": "link"
                  },
                  "http_status": {
                    "label": "HTTP status",
                    "format": "number"
                  },
                  "error": {
                    "label": "Error",
                    "format": "text"
                  },
                  "scrape_duration_ms": {
                    "label": "Duration (ms)",
                    "format": "number"
                  },
                  "navigation_attempts": {
                    "label": "Navigation attempts",
                    "format": "number"
                  },
                  "navigation_retries": {
                    "label": "Navigation retries",
                    "format": "number"
                  },
                  "proxy_resolution_state": {
                    "label": "Proxy state",
                    "format": "text"
                  },
                  "session_input_state": {
                    "label": "Session input",
                    "format": "text"
                  },
                  "browser_locale": {
                    "label": "Browser locale",
                    "format": "text"
                  },
                  "navigation_retry_delays_seconds": {
                    "label": "Retry delays",
                    "format": "json"
                  },
                  "records_emitted": {
                    "label": "Records emitted",
                    "format": "number"
                  },
                  "input_accounting": {
                    "label": "Input accounting",
                    "format": "json"
                  },
                  "session_cookie_count": {
                    "label": "Session cookie count",
                    "format": "number"
                  },
                  "session_cookie_expiry_state": {
                    "label": "Cookie expiry",
                    "format": "text"
                  },
                  "run_duration_ms": {
                    "label": "Run duration (ms)",
                    "format": "number"
                  },
                  "proxy_used": {
                    "label": "Proxy used",
                    "format": "boolean"
                  },
                  "request_delay_seconds": {
                    "label": "Request delay (s)",
                    "format": "number"
                  },
                  "scrape_timestamp": {
                    "label": "Scrape timestamp",
                    "format": "text"
                  },
                  "requested_result_types": {
                    "label": "Requested result types",
                    "format": "json"
                  },
                  "run_started_at": {
                    "label": "Run started",
                    "format": "text"
                  },
                  "run_finished_at": {
                    "label": "Run finished",
                    "format": "text"
                  },
                  "source_pages_attempted": {
                    "label": "Source pages attempted",
                    "format": "number"
                  },
                  "content_type_counts": {
                    "label": "Content type counts",
                    "format": "json"
                  },
                  "access_state_counts": {
                    "label": "Access state counts",
                    "format": "json"
                  },
                  "relationship_collection_diagnostic": {
                    "label": "Relationship collection diagnostic",
                    "format": "json"
                  },
                  "manifest_version": {
                    "label": "Manifest version",
                    "format": "text"
                  },
                  "requested_output_fields": {
                    "label": "Requested output fields",
                    "format": "json"
                  },
                  "max_concurrency": {
                    "label": "Max concurrency",
                    "format": "number"
                  },
                  "navigation_attempts_total": {
                    "label": "Navigation attempts total",
                    "format": "number"
                  },
                  "navigation_retries_total": {
                    "label": "Navigation retries total",
                    "format": "number"
                  },
                  "raw_evidence_retention_days": {
                    "label": "Raw retention days",
                    "format": "number"
                  },
                  "max_raw_evidence_bytes": {
                    "label": "Max raw bytes",
                    "format": "number"
                  },
                  "redact_sensitive_query_params": {
                    "label": "Sensitive query redaction",
                    "format": "boolean"
                  },
                  "raw_html_redactions": {
                    "label": "HTML redactions",
                    "format": "json"
                  },
                  "url_redactions": {
                    "label": "URL redactions",
                    "format": "json"
                  },
                  "date_interpretations": {
                    "label": "Date interpretations",
                    "format": "json"
                  },
                  "canonical_url": {
                    "label": "Canonical URL",
                    "format": "link"
                  },
                  "redirect_chain": {
                    "label": "Redirect chain",
                    "format": "json"
                  },
                  "answer_count": {
                    "label": "Answer count",
                    "format": "number"
                  },
                  "scroll_attempts": {
                    "label": "Scroll attempts",
                    "format": "number"
                  },
                  "scroll_state": {
                    "label": "Scroll state",
                    "format": "text"
                  },
                  "load_more_attempts": {
                    "label": "Load-more attempts",
                    "format": "number"
                  },
                  "load_more_clicks": {
                    "label": "Load-more clicks",
                    "format": "number"
                  },
                  "load_more_state": {
                    "label": "Load-more state",
                    "format": "text"
                  },
                  "raw_html_redaction_state": {
                    "label": "HTML redaction",
                    "format": "text"
                  },
                  "url_redaction_state": {
                    "label": "URL redaction",
                    "format": "text"
                  },
                  "output_format": {
                    "label": "Output format",
                    "format": "text"
                  },
                  "answers": {
                    "label": "Nested answers",
                    "format": "json"
                  },
                  "comments": {
                    "label": "Nested comments",
                    "format": "json"
                  },
                  "nested_answer_count": {
                    "label": "Nested answers emitted",
                    "format": "number"
                  },
                  "nested_answer_count_observed": {
                    "label": "Nested answers observed",
                    "format": "number"
                  },
                  "nested_comment_count": {
                    "label": "Nested comments emitted",
                    "format": "number"
                  },
                  "nested_comment_count_observed": {
                    "label": "Nested comments observed",
                    "format": "number"
                  },
                  "nested_child_state": {
                    "label": "Nested child state",
                    "format": "text"
                  },
                  "nested_orphan_reason": {
                    "label": "Nested orphan reason",
                    "format": "text"
                  },
                  "requested_depth": {
                    "label": "Requested depth",
                    "format": "text"
                  },
                  "observed_depth": {
                    "label": "Observed depth",
                    "format": "text"
                  },
                  "detail_expansion_state": {
                    "label": "Detail expansion",
                    "format": "text"
                  },
                  "title": {
                    "label": "Title",
                    "format": "text"
                  },
                  "url": {
                    "label": "URL",
                    "format": "link"
                  },
                  "post_url": {
                    "label": "Post URL",
                    "format": "link"
                  },
                  "post_title": {
                    "label": "Post title",
                    "format": "text"
                  },
                  "post_author_name": {
                    "label": "Post author",
                    "format": "text"
                  },
                  "post_author_url": {
                    "label": "Post author URL",
                    "format": "link"
                  },
                  "post_author_image_url": {
                    "label": "Post author image",
                    "format": "link"
                  },
                  "post_author_is_verified": {
                    "label": "Post author verified",
                    "format": "boolean"
                  },
                  "post_author_is_anonymous": {
                    "label": "Post author anonymous",
                    "format": "boolean"
                  },
                  "post_media_urls": {
                    "label": "Post media URLs",
                    "format": "json"
                  },
                  "post_image_urls": {
                    "label": "Post image URLs",
                    "format": "json"
                  },
                  "post_video_urls": {
                    "label": "Post video URLs",
                    "format": "json"
                  },
                  "post_outbound_links": {
                    "label": "Post outbound links",
                    "format": "json"
                  },
                  "question_media_urls": {
                    "label": "Question media URLs",
                    "format": "json"
                  },
                  "question_author_name": {
                    "label": "Question author",
                    "format": "text"
                  },
                  "question_author_url": {
                    "label": "Question author URL",
                    "format": "link"
                  },
                  "question_author_image_url": {
                    "label": "Question author image",
                    "format": "link"
                  },
                  "question_author_id": {
                    "label": "Question author ID",
                    "format": "text"
                  },
                  "question_author_is_verified": {
                    "label": "Question author verified",
                    "format": "boolean"
                  },
                  "question_author_is_anonymous": {
                    "label": "Question author anonymous",
                    "format": "boolean"
                  },
                  "question_author_credentials": {
                    "label": "Question author credentials",
                    "format": "text"
                  },
                  "question_image_urls": {
                    "label": "Question image URLs",
                    "format": "json"
                  },
                  "question_video_urls": {
                    "label": "Question video URLs",
                    "format": "json"
                  },
                  "question_outbound_links": {
                    "label": "Question outbound links",
                    "format": "json"
                  },
                  "post_author_id": {
                    "label": "Post author ID",
                    "format": "text"
                  },
                  "post_author_credentials": {
                    "label": "Post author credentials",
                    "format": "text"
                  },
                  "post_body": {
                    "label": "Post body",
                    "format": "text"
                  },
                  "post_created_at": {
                    "label": "Post created at",
                    "format": "text"
                  },
                  "post_updated_at": {
                    "label": "Post updated at",
                    "format": "text"
                  },
                  "post_updated_age_days": {
                    "label": "Post updated age (days)",
                    "format": "number"
                  },
                  "post_updated_age_state": {
                    "label": "Post updated age evidence",
                    "format": "text"
                  },
                  "post_age_days": {
                    "label": "Post age (days)",
                    "format": "number"
                  },
                  "post_age_state": {
                    "label": "Post age evidence",
                    "format": "text"
                  },
                  "relationship": {
                    "label": "Relationship",
                    "format": "text"
                  },
                  "edge_id": {
                    "label": "Edge ID",
                    "format": "text"
                  },
                  "from_url": {
                    "label": "From URL",
                    "format": "link"
                  },
                  "to_url": {
                    "label": "To URL",
                    "format": "link"
                  },
                  "record_id": {
                    "label": "Record ID",
                    "format": "text"
                  },
                  "access_state": {
                    "label": "Access",
                    "format": "text"
                  },
                  "from_record_id": {
                    "label": "From record",
                    "format": "text"
                  },
                  "to_record_id": {
                    "label": "To record",
                    "format": "text"
                  },
                  "from_id": {
                    "label": "From ID",
                    "format": "text"
                  },
                  "to_id": {
                    "label": "To ID",
                    "format": "text"
                  },
                  "to_name": {
                    "label": "To name",
                    "format": "text"
                  },
                  "to_image_url": {
                    "label": "To image",
                    "format": "link"
                  },
                  "node_image_url": {
                    "label": "Node image",
                    "format": "link"
                  },
                  "relationship_collection_key": {
                    "label": "Relationship collection",
                    "format": "text"
                  },
                  "collection_total_text": {
                    "label": "Collection total",
                    "format": "text"
                  },
                  "collection_total_value": {
                    "label": "Collection total (value)",
                    "format": "number"
                  },
                  "edge_evidence_field": {
                    "label": "Edge evidence",
                    "format": "text"
                  },
                  "unresolved_reason": {
                    "label": "Unresolved reason",
                    "format": "text"
                  },
                  "source_query": {
                    "label": "Source query",
                    "format": "text"
                  },
                  "source_queries": {
                    "label": "Source queries",
                    "format": "json"
                  },
                  "matched_input": {
                    "label": "Matched input",
                    "format": "text"
                  },
                  "matched_input_kind": {
                    "label": "Matched input kind",
                    "format": "text"
                  },
                  "source_observations": {
                    "label": "Source observations",
                    "format": "json"
                  },
                  "source_observation_count": {
                    "label": "Source observation count",
                    "format": "number"
                  },
                  "question_url": {
                    "label": "Question URL",
                    "format": "link"
                  },
                  "question_answer_count": {
                    "label": "Answers (raw)",
                    "format": "text"
                  },
                  "question_answer_count_value": {
                    "label": "Answers",
                    "format": "number"
                  },
                  "question_answer_count_scraped": {
                    "label": "Answers scraped",
                    "format": "number"
                  },
                  "question_id": {
                    "label": "Question ID",
                    "format": "text"
                  },
                  "question_created_at": {
                    "label": "Question created",
                    "format": "text"
                  },
                  "question_view_count": {
                    "label": "Question views",
                    "format": "number"
                  },
                  "question_audit_state": {
                    "label": "Question audit state",
                    "format": "text"
                  },
                  "question_merge_count": {
                    "label": "Question merges into",
                    "format": "number"
                  },
                  "question_age_days": {
                    "label": "Question age (days)",
                    "format": "number"
                  },
                  "question_age_state": {
                    "label": "Question age evidence",
                    "format": "text"
                  },
                  "question_updated_at": {
                    "label": "Question updated",
                    "format": "text"
                  },
                  "last_answered_at": {
                    "label": "Last answered (observed)",
                    "format": "date"
                  },
                  "last_answered_at_evidence": {
                    "label": "Last answered evidence",
                    "format": "json"
                  },
                  "answer_id": {
                    "label": "Answer ID",
                    "format": "text"
                  },
                  "answer_node_id": {
                    "label": "Answer node ID",
                    "format": "text"
                  },
                  "answer_url": {
                    "label": "Answer URL",
                    "format": "link"
                  },
                  "answer_text": {
                    "label": "Answer",
                    "format": "text"
                  },
                  "answer_html": {
                    "label": "Answer HTML",
                    "format": "text"
                  },
                  "answer_media_urls": {
                    "label": "Answer media URLs",
                    "format": "json"
                  },
                  "answer_image_urls": {
                    "label": "Answer image URLs",
                    "format": "json"
                  },
                  "answer_video_urls": {
                    "label": "Answer video URLs",
                    "format": "json"
                  },
                  "answer_outbound_links": {
                    "label": "Answer outbound links",
                    "format": "json"
                  },
                  "answer_translation_state": {
                    "label": "Answer translation state",
                    "format": "text"
                  },
                  "answer_translation_label": {
                    "label": "Answer translation label",
                    "format": "text"
                  },
                  "answer_original_url": {
                    "label": "Answer original URL",
                    "format": "link"
                  },
                  "answer_is_anonymous": {
                    "label": "Answer is anonymous",
                    "format": "boolean"
                  },
                  "answer_author_is_verified": {
                    "label": "Answer author verified",
                    "format": "boolean"
                  },
                  "answer_updated_at": {
                    "label": "Answer updated at",
                    "format": "text"
                  },
                  "answer_created_at": {
                    "label": "Answer created at",
                    "format": "text"
                  },
                  "answer_age_days": {
                    "label": "Answer age (days)",
                    "format": "number"
                  },
                  "answer_age_state": {
                    "label": "Answer age evidence",
                    "format": "text"
                  },
                  "answer_visibility": {
                    "label": "Answer visibility",
                    "format": "text"
                  },
                  "answer_text_completeness": {
                    "label": "Answer text completeness",
                    "format": "text"
                  },
                  "answer_is_collapsed": {
                    "label": "Answer is collapsed",
                    "format": "boolean"
                  },
                  "answer_is_quora_plus": {
                    "label": "Answer is Quora+",
                    "format": "boolean"
                  },
                  "answer_is_top_labeled": {
                    "label": "Answer has top label",
                    "format": "boolean"
                  },
                  "answer_rank_source": {
                    "label": "Answer rank source",
                    "format": "text"
                  },
                  "answer_upvote_count": {
                    "label": "Answer upvotes",
                    "format": "text"
                  },
                  "answer_upvote_count_value": {
                    "label": "Answer upvotes (number)",
                    "format": "number"
                  },
                  "answer_comment_count": {
                    "label": "Answer comments",
                    "format": "text"
                  },
                  "answer_comment_count_value": {
                    "label": "Answer comments (number)",
                    "format": "number"
                  },
                  "answer_view_count": {
                    "label": "Answer views",
                    "format": "text"
                  },
                  "answer_view_count_value": {
                    "label": "Answer views (number)",
                    "format": "number"
                  },
                  "answer_share_count": {
                    "label": "Answer shares",
                    "format": "text"
                  },
                  "answer_share_count_value": {
                    "label": "Answer shares (number)",
                    "format": "number"
                  },
                  "reaction_breakdown": {
                    "label": "Answer reaction breakdown",
                    "format": "json"
                  },
                  "is_ai_answer": {
                    "label": "Is AI answer",
                    "format": "boolean"
                  },
                  "ai_label_text": {
                    "label": "AI label text",
                    "format": "text"
                  },
                  "ai_label_source": {
                    "label": "AI label source",
                    "format": "text"
                  },
                  "related_content": {
                    "label": "Related content",
                    "format": "json"
                  },
                  "related_content_count": {
                    "label": "Related content count",
                    "format": "number"
                  },
                  "related_content_observed_count": {
                    "label": "Related content observed",
                    "format": "number"
                  },
                  "related_content_limit_reached": {
                    "label": "Related content cap",
                    "format": "boolean"
                  },
                  "answer_jsonld_type": {
                    "label": "Answer JSON-LD type",
                    "format": "text"
                  },
                  "answer_rank": {
                    "label": "Answer rank",
                    "format": "number"
                  },
                  "answer_limit_reached": {
                    "label": "Answer cap",
                    "format": "boolean"
                  },
                  "comment_id": {
                    "label": "Comment ID",
                    "format": "text"
                  },
                  "comment_url": {
                    "label": "Comment URL",
                    "format": "link"
                  },
                  "comment_text": {
                    "label": "Comment",
                    "format": "text"
                  },
                  "comment_author_name": {
                    "label": "Comment author",
                    "format": "text"
                  },
                  "comment_author_image_url": {
                    "label": "Comment author image",
                    "format": "link"
                  },
                  "comment_author_id": {
                    "label": "Comment author ID",
                    "format": "text"
                  },
                  "comment_author_credentials": {
                    "label": "Comment author credentials",
                    "format": "text"
                  },
                  "comment_author_is_verified": {
                    "label": "Comment author verified",
                    "format": "boolean"
                  },
                  "comment_is_anonymous": {
                    "label": "Anonymous author",
                    "format": "boolean"
                  },
                  "comment_timestamp": {
                    "label": "Comment timestamp",
                    "format": "text"
                  },
                  "comment_created_at": {
                    "label": "Comment created",
                    "format": "text"
                  },
                  "comment_age_days": {
                    "label": "Comment age (days)",
                    "format": "number"
                  },
                  "comment_age_state": {
                    "label": "Comment age evidence",
                    "format": "text"
                  },
                  "comment_visibility": {
                    "label": "Comment visibility",
                    "format": "text"
                  },
                  "comment_upvote_count": {
                    "label": "Comment upvotes",
                    "format": "text"
                  },
                  "comment_depth": {
                    "label": "Comment depth",
                    "format": "number"
                  },
                  "comment_depth_limit_reached": {
                    "label": "Comment depth cap reached",
                    "format": "boolean"
                  },
                  "comment_items_observed_count": {
                    "label": "Comments observed",
                    "format": "number"
                  },
                  "comment_items_emitted_count": {
                    "label": "Comments emitted",
                    "format": "number"
                  },
                  "comment_limit_reached": {
                    "label": "Comment cap",
                    "format": "boolean"
                  },
                  "comment_media_urls": {
                    "label": "Comment media",
                    "format": "json"
                  },
                  "comment_image_urls": {
                    "label": "Comment image URLs",
                    "format": "json"
                  },
                  "comment_video_urls": {
                    "label": "Comment video URLs",
                    "format": "json"
                  },
                  "comment_outbound_links": {
                    "label": "Comment outbound links",
                    "format": "json"
                  },
                  "comment_collection_label": {
                    "label": "Comment collection",
                    "format": "text"
                  },
                  "comment_is_top_labeled": {
                    "label": "Top-labeled comment",
                    "format": "boolean"
                  },
                  "comment_filter_top_only": {
                    "label": "Top comments only",
                    "format": "boolean"
                  },
                  "comment_filter_observed": {
                    "label": "Comment filter observed",
                    "format": "number"
                  },
                  "comment_filter_emitted": {
                    "label": "Comment filter emitted",
                    "format": "number"
                  },
                  "comment_filter_unknown": {
                    "label": "Comment filter unknown",
                    "format": "number"
                  },
                  "comment_rank": {
                    "label": "Comment rank",
                    "format": "number"
                  },
                  "comment_rank_source": {
                    "label": "Comment rank source",
                    "format": "text"
                  },
                  "comment_sort_order": {
                    "label": "Comment sort",
                    "format": "text"
                  },
                  "comment_sort_observed": {
                    "label": "Comments observed",
                    "format": "number"
                  },
                  "comment_sort_fallback_count": {
                    "label": "Comment sort fallback",
                    "format": "number"
                  },
                  "comment_reaction_count": {
                    "label": "Comment reactions",
                    "format": "text"
                  },
                  "comment_reaction_count_value": {
                    "label": "Comment reactions (typed)",
                    "format": "number"
                  },
                  "comment_reply_count": {
                    "label": "Comment replies",
                    "format": "text"
                  },
                  "comment_reply_path": {
                    "label": "Reply path",
                    "format": "json"
                  },
                  "parent_comment_id": {
                    "label": "Parent comment ID",
                    "format": "text"
                  },
                  "parent_comment_url": {
                    "label": "Parent comment URL",
                    "format": "link"
                  },
                  "comment_is_reply": {
                    "label": "Comment is reply",
                    "format": "boolean"
                  },
                  "comment_reaction_breakdown": {
                    "label": "Comment reactions",
                    "format": "json"
                  },
                  "comment_upvote_count_value": {
                    "label": "Comment upvotes",
                    "format": "number"
                  },
                  "comment_reply_count_value": {
                    "label": "Comment replies",
                    "format": "number"
                  },
                  "profile_url": {
                    "label": "Profile URL",
                    "format": "link"
                  },
                  "profile_name": {
                    "label": "Profile name",
                    "format": "text"
                  },
                  "profile_bio": {
                    "label": "Profile bio",
                    "format": "text"
                  },
                  "profile_image_url": {
                    "label": "Profile image",
                    "format": "link"
                  },
                  "profile_jsonld_type": {
                    "label": "Profile JSON-LD type",
                    "format": "text"
                  },
                  "profile_author_id": {
                    "label": "Profile author ID",
                    "format": "text"
                  },
                  "profile_is_verified": {
                    "label": "Profile verified",
                    "format": "boolean"
                  },
                  "profile_is_restricted": {
                    "label": "Profile restricted",
                    "format": "boolean"
                  },
                  "profile_snapshot_requested": {
                    "label": "Profile snapshot requested",
                    "format": "boolean"
                  },
                  "topic_url": {
                    "label": "Topic URL",
                    "format": "link"
                  },
                  "space_url": {
                    "label": "Space URL",
                    "format": "link"
                  },
                  "feed_url": {
                    "label": "Feed URL",
                    "format": "link"
                  },
                  "feed_type": {
                    "label": "Feed type",
                    "format": "text"
                  },
                  "feed_title": {
                    "label": "Feed title",
                    "format": "text"
                  },
                  "feed_text": {
                    "label": "Feed text",
                    "format": "text"
                  },
                  "feed_author_name": {
                    "label": "Feed author",
                    "format": "text"
                  },
                  "feed_author_url": {
                    "label": "Feed author URL",
                    "format": "link"
                  },
                  "feed_author_image_url": {
                    "label": "Feed author image",
                    "format": "link"
                  },
                  "feed_author_id": {
                    "label": "Feed author ID",
                    "format": "text"
                  },
                  "feed_author_credentials": {
                    "label": "Feed author credentials",
                    "format": "text"
                  },
                  "feed_author_is_verified": {
                    "label": "Feed author verified",
                    "format": "boolean"
                  },
                  "feed_author_is_anonymous": {
                    "label": "Feed author anonymous",
                    "format": "boolean"
                  },
                  "feed_created_at": {
                    "label": "Feed created at",
                    "format": "text"
                  },
                  "feed_age_days": {
                    "label": "Feed age (days)",
                    "format": "number"
                  },
                  "feed_age_state": {
                    "label": "Feed age evidence",
                    "format": "text"
                  },
                  "media_urls": {
                    "label": "Feed media URLs",
                    "format": "array"
                  },
                  "image_urls": {
                    "label": "Feed image URLs",
                    "format": "array"
                  },
                  "video_urls": {
                    "label": "Feed video URLs",
                    "format": "array"
                  },
                  "outbound_links": {
                    "label": "Feed outbound links",
                    "format": "array"
                  },
                  "activity_url": {
                    "label": "Activity URL",
                    "format": "link"
                  },
                  "activity_source": {
                    "label": "Activity source",
                    "format": "text"
                  },
                  "activity_question_url": {
                    "label": "Activity question URL",
                    "format": "link"
                  },
                  "activity_question_title": {
                    "label": "Activity question title",
                    "format": "text"
                  },
                  "activity_question_id": {
                    "label": "Activity question ID",
                    "format": "text"
                  },
                  "activity_answer_id": {
                    "label": "Activity answer ID",
                    "format": "text"
                  },
                  "author_name": {
                    "label": "Author name",
                    "format": "text"
                  },
                  "author_url": {
                    "label": "Author URL",
                    "format": "link"
                  },
                  "author_image_url": {
                    "label": "Author image",
                    "format": "link"
                  },
                  "author_id": {
                    "label": "Author ID",
                    "format": "text"
                  },
                  "author_credentials": {
                    "label": "Author credentials",
                    "format": "text"
                  },
                  "topics": {
                    "label": "Topics",
                    "format": "json"
                  },
                  "topic_links": {
                    "label": "Topic links",
                    "format": "json"
                  },
                  "created_at": {
                    "label": "Created",
                    "format": "date"
                  },
                  "timestamp": {
                    "label": "Timestamp",
                    "format": "text"
                  },
                  "include_unresolved_edges": {
                    "label": "Unresolved edges included",
                    "format": "boolean"
                  },
                  "include_field_evidence": {
                    "label": "Field evidence included",
                    "format": "boolean"
                  },
                  "include_engagement_breakdown": {
                    "label": "Engagement breakdown included",
                    "format": "boolean"
                  },
                  "include_entity_graph": {
                    "label": "Entity graph included",
                    "format": "boolean"
                  },
                  "profile_snapshot_state": {
                    "label": "Profile snapshot",
                    "format": "text"
                  },
                  "global_answer_cap_reached": {
                    "label": "Global answer cap",
                    "format": "boolean"
                  },
                  "answers_observed_before_global_cap": {
                    "label": "Answers observed",
                    "format": "number"
                  },
                  "answers_suppressed_by_global_cap": {
                    "label": "Answers suppressed",
                    "format": "number"
                  },
                  "dedupe_mode": {
                    "label": "Dedupe mode",
                    "format": "text"
                  },
                  "duplicate_records_suppressed": {
                    "label": "Duplicates suppressed",
                    "format": "number"
                  },
                  "raw_html_bytes": {
                    "label": "Raw HTML bytes",
                    "format": "number"
                  },
                  "raw_html_returned_bytes": {
                    "label": "Returned HTML bytes",
                    "format": "number"
                  },
                  "raw_html_truncated": {
                    "label": "Raw HTML truncated",
                    "format": "boolean"
                  },
                  "raw_evidence_state": {
                    "label": "Raw evidence",
                    "format": "text"
                  },
                  "raw_html_sha256": {
                    "label": "HTML SHA-256",
                    "format": "text"
                  },
                  "raw_html": {
                    "label": "HTML snapshot",
                    "format": "text"
                  },
                  "output_projection": {
                    "label": "Projection",
                    "format": "text"
                  },
                  "max_items_per_source": {
                    "label": "Configured source cap",
                    "format": "number"
                  },
                  "source_cap": {
                    "label": "Source cap",
                    "format": "number"
                  },
                  "source_items_observed": {
                    "label": "Source observed",
                    "format": "number"
                  },
                  "source_items_emitted": {
                    "label": "Source emitted",
                    "format": "number"
                  },
                  "source_cap_reached": {
                    "label": "Source cap reached",
                    "format": "boolean"
                  },
                  "source_url": {
                    "label": "Source url",
                    "format": "link"
                  },
                  "from_content_type": {
                    "label": "From content type",
                    "format": "text"
                  },
                  "to_content_type": {
                    "label": "To content type",
                    "format": "text"
                  },
                  "edge_state": {
                    "label": "Edge state",
                    "format": "text"
                  },
                  "requested_language": {
                    "label": "Requested language",
                    "format": "text"
                  },
                  "max_answers_per_question": {
                    "label": "Max answers per question",
                    "format": "number"
                  },
                  "max_answers_total": {
                    "label": "Max answers total",
                    "format": "number"
                  },
                  "recordType": {
                    "label": "Record type alias",
                    "format": "text"
                  },
                  "scrapedAt": {
                    "label": "Scraped at alias",
                    "format": "text"
                  },
                  "sourceUrl": {
                    "label": "Source URL alias",
                    "format": "text"
                  },
                  "question_follower_count": {
                    "label": "Question followers",
                    "format": "text"
                  },
                  "question_follower_count_value": {
                    "label": "Question followers (number)",
                    "format": "text"
                  },
                  "related_questions": {
                    "label": "Related questions",
                    "format": "json"
                  },
                  "answer_author_follower_count": {
                    "label": "Answer author followers",
                    "format": "text"
                  },
                  "answer_access_option": {
                    "label": "Answer effective access",
                    "format": "text"
                  },
                  "answer_effective_access": {
                    "label": "Answer effective access (alias)",
                    "format": "text"
                  },
                  "answer_original_question_url": {
                    "label": "Original question URL",
                    "format": "text"
                  },
                  "answer_original_question_title": {
                    "label": "Original question title",
                    "format": "text"
                  },
                  "profile_follower_count": {
                    "label": "Profile followers",
                    "format": "text"
                  },
                  "profile_following_count": {
                    "label": "Profile following",
                    "format": "text"
                  },
                  "profile_answer_count": {
                    "label": "Profile answers",
                    "format": "text"
                  },
                  "profile_question_count": {
                    "label": "Profile questions",
                    "format": "text"
                  },
                  "profile_post_count": {
                    "label": "Profile posts",
                    "format": "text"
                  },
                  "profile_total_content_views": {
                    "label": "Profile total views",
                    "format": "text"
                  },
                  "profile_month_content_views": {
                    "label": "Profile monthly views",
                    "format": "text"
                  },
                  "profile_joined_at": {
                    "label": "Profile joined",
                    "format": "text"
                  },
                  "profile_credential": {
                    "label": "Profile credential",
                    "format": "text"
                  },
                  "profile_work_credentials": {
                    "label": "Work credentials",
                    "format": "json"
                  },
                  "profile_school_credentials": {
                    "label": "School credentials",
                    "format": "json"
                  },
                  "profile_location_credentials": {
                    "label": "Location credentials",
                    "format": "json"
                  },
                  "profile_expertise_topics": {
                    "label": "Expertise topics",
                    "format": "json"
                  },
                  "profile_account_status": {
                    "label": "Profile account status",
                    "format": "text"
                  },
                  "profile_is_anonymous": {
                    "label": "Profile anonymous",
                    "format": "text"
                  },
                  "profile_is_deceased": {
                    "label": "Profile deceased",
                    "format": "text"
                  },
                  "profile_history_limited": {
                    "label": "Profile history limited",
                    "format": "text"
                  },
                  "profile_history_state": {
                    "label": "Profile history state",
                    "format": "text"
                  },
                  "topic_id": {
                    "label": "Topic ID",
                    "format": "text"
                  },
                  "topic_name": {
                    "label": "Topic name",
                    "format": "text"
                  },
                  "topic_follower_count": {
                    "label": "Topic followers",
                    "format": "text"
                  },
                  "topic_most_viewed_authors": {
                    "label": "Topic most-viewed authors",
                    "format": "json"
                  },
                  "topic_photo_url": {
                    "label": "Topic photo",
                    "format": "text"
                  },
                  "topic_default_photo_url": {
                    "label": "Topic default photo",
                    "format": "text"
                  },
                  "topic_has_leaderboard": {
                    "label": "Topic leaderboard",
                    "format": "text"
                  },
                  "topic_feed_state": {
                    "label": "Topic feed state",
                    "format": "text"
                  },
                  "space_id": {
                    "label": "Space ID",
                    "format": "text"
                  },
                  "space_name": {
                    "label": "Space name",
                    "format": "text"
                  },
                  "space_follower_count": {
                    "label": "Space followers",
                    "format": "text"
                  },
                  "space_all_time_followers": {
                    "label": "Space all-time followers",
                    "format": "text"
                  },
                  "space_member_count": {
                    "label": "Space members",
                    "format": "text"
                  },
                  "space_contributor_count": {
                    "label": "Space contributors",
                    "format": "text"
                  },
                  "space_moderator_count": {
                    "label": "Space moderators",
                    "format": "text"
                  },
                  "space_admin_count": {
                    "label": "Space admins",
                    "format": "text"
                  },
                  "space_description": {
                    "label": "Space description",
                    "format": "text"
                  },
                  "space_icon_url": {
                    "label": "Space icon",
                    "format": "text"
                  },
                  "space_cover_url": {
                    "label": "Space cover",
                    "format": "text"
                  },
                  "space_item_count": {
                    "label": "Space items",
                    "format": "text"
                  },
                  "space_feed_capped": {
                    "label": "Space feed capped",
                    "format": "text"
                  },
                  "space_ads_skipped": {
                    "label": "Space ads skipped",
                    "format": "text"
                  },
                  "feed_upvote_count": {
                    "label": "Feed upvotes",
                    "format": "text"
                  },
                  "feed_view_count": {
                    "label": "Feed views",
                    "format": "text"
                  },
                  "feed_share_count": {
                    "label": "Feed shares",
                    "format": "text"
                  },
                  "feed_comment_count": {
                    "label": "Feed comments",
                    "format": "text"
                  },
                  "feed_effective_access": {
                    "label": "Feed effective access",
                    "format": "text"
                  },
                  "feed_is_ai_answer": {
                    "label": "Feed AI answer",
                    "format": "text"
                  },
                  "feed_question_url": {
                    "label": "Feed question URL",
                    "format": "text"
                  },
                  "feed_question_title": {
                    "label": "Feed question title",
                    "format": "text"
                  },
                  "post_upvote_count": {
                    "label": "Post upvotes",
                    "format": "text"
                  },
                  "post_view_count": {
                    "label": "Post views",
                    "format": "text"
                  },
                  "post_share_count": {
                    "label": "Post shares",
                    "format": "text"
                  },
                  "post_comment_count": {
                    "label": "Post comments",
                    "format": "text"
                  },
                  "post_effective_access": {
                    "label": "Post effective access",
                    "format": "text"
                  },
                  "post_is_question_summary": {
                    "label": "Post is question summary",
                    "format": "text"
                  },
                  "post_author_follower_count": {
                    "label": "Post author followers",
                    "format": "text"
                  },
                  "post_question_url": {
                    "label": "Post question URL",
                    "format": "text"
                  },
                  "post_question_title": {
                    "label": "Post question title",
                    "format": "text"
                  },
                  "comment_source": {
                    "label": "Comment source",
                    "format": "text"
                  },
                  "comment_page_limited": {
                    "label": "Comment page limited",
                    "format": "text"
                  },
                  "comment_container_id": {
                    "label": "Comment container ID",
                    "format": "text"
                  },
                  "proxy_path_used": {
                    "label": "Proxy path",
                    "format": "text"
                  },
                  "search_discovery_source": {
                    "label": "Search discovery source",
                    "format": "text"
                  },
                  "search_discovery_hits": {
                    "label": "Search discovery hits",
                    "format": "text"
                  },
                  "answer_gql_pages": {
                    "label": "Answer GraphQL pages",
                    "format": "text"
                  },
                  "comment_gql_pages": {
                    "label": "Comment GraphQL pages",
                    "format": "text"
                  },
                  "topic_feed_pages": {
                    "label": "Topic feed pages",
                    "format": "text"
                  },
                  "space_feed_bundles": {
                    "label": "Space feed bundles",
                    "format": "text"
                  },
                  "quora_plus_preview_count": {
                    "label": "Quora+ previews",
                    "format": "text"
                  },
                  "comment_cap_hit_count": {
                    "label": "Comment cap hits",
                    "format": "text"
                  },
                  "topic_feed_cap_hit_count": {
                    "label": "Topic feed cap hits",
                    "format": "text"
                  },
                  "profile_history_pages": {
                    "label": "Profile history pages",
                    "format": "number"
                  },
                  "relationship_identity_pages": {
                    "label": "Identity list pages",
                    "format": "number"
                  },
                  "relationship_identity_requests": {
                    "label": "Identity list requests",
                    "format": "number"
                  },
                  "question_audit_attempts": {
                    "label": "Question audit attempts",
                    "format": "number"
                  },
                  "answer_pagination_state": {
                    "label": "Answer pagination state",
                    "format": "text"
                  },
                  "answer_pagination_unrelated_suppressed": {
                    "label": "Unrelated paginated answers suppressed",
                    "format": "number"
                  },
                  "relationship_identity_states": {
                    "label": "Relationship identity states",
                    "format": "json"
                  },
                  "gql_calls": {
                    "label": "GraphQL calls",
                    "format": "json"
                  },
                  "query_hashes": {
                    "label": "Query hashes",
                    "format": "json"
                  },
                  "legacy_input_notes": {
                    "label": "Legacy input notes",
                    "format": "text"
                  },
                  "hard_limits": {
                    "label": "Hard limits",
                    "format": "json"
                  },
                  "proxy_errors": {
                    "label": "Proxy errors",
                    "format": "json"
                  }
                }
              }
            }
          }
        }
      }
    },
    "buildNumber": "1.0.2",
    "imageDigest": "38a27bd31f46fadd50a72e60389228288f293b1183066abe334ed82372092b48",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.04058777777777778
    }
  }
}