{
  "openapi": "3.0.1",
  "info": {
    "title": "Quora Scraper — Questions, Answers, Profiles & Spaces",
    "description": "Scrape Quora questions, answers, search, profiles, Spaces and Topics without login. Full answer text and HTML, per-answer views and upvotes, AI-answer flag, author credentials and lead contacts.",
    "version": "0.0",
    "x-build-id": "0f6CgQaj8zelGqsbq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/brilliant_gum~quora-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-brilliant_gum-quora-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/brilliant_gum~quora-scraper/runs": {
      "post": {
        "operationId": "runs-sync-brilliant_gum-quora-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/brilliant_gum~quora-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-brilliant_gum-quora-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "question",
              "search",
              "profile",
              "space"
            ],
            "type": "string",
            "description": "What to scrape. 'Question + answers' opens question pages and pulls their answers; 'Keyword search' finds Quora pages for your phrases; 'Profile' scrapes a user profile with their answers and posts; 'Space / Topic' scrapes a Space or Topic page with its feed. Links are recognised automatically, so a mixed list of URLs works in any mode; the mode also decides how bare identifiers are read.",
            "default": "question"
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Quora links: question, answer, profile, Space (name.quora.com; old quora.com/q/name links are converted), Topic (/topic/...), or a Quora search link (run as a keyword search). Each link's type is detected automatically, so a mixed list works. In the form just paste the links; in JSON this field takes objects — [{\"url\": \"https://www.quora.com/...\"}]. For a plain list of strings use \"Identifiers\" below, which also accepts full URLs. If Question mode is started with no links, identifiers or search terms at all, one example question is scraped so you can see the output.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "identifiers": {
            "title": "Identifiers (slugs / usernames)",
            "type": "array",
            "description": "Bare identifiers instead of full links, read according to the selected mode: a profile slug such as 'Adam-DAngelo', a question slug, or a Space name such as 'quorablog'. Full URLs pass through unchanged, so this is also the simplest way to give a plain list of links in JSON.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Phrases to search Quora for, one search per phrase. Every page found is scraped like a pasted link. Terms run in any mode, so clear this list if you only want your links.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Search result type",
            "enum": [
              "all",
              "question",
              "profile",
              "space",
              "topic"
            ],
            "type": "string",
            "description": "Which kind of Quora page a keyword search returns. 'Questions' gives question pages together with their answers.",
            "default": "question"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of rows saved across all links and searches. Each row is billed, so this also caps the result charge. 0 = no limit.",
            "default": 100
          },
          "maxAnswers": {
            "title": "Max answers per question",
            "minimum": 0,
            "type": "integer",
            "description": "Most answers kept per question page; on a profile, most answers and posts combined. Quora shows signed-out visitors only its top answers — usually about half a dozen — so a higher number cannot add more. 0 = all that Quora shows.",
            "default": 20
          },
          "includeAnswers": {
            "title": "Include answers",
            "type": "boolean",
            "description": "Save answer rows. Turn off and a question page gives only the question row, a profile only the profile row.",
            "default": true
          },
          "scrapeAuthorProfiles": {
            "title": "Enrich answer authors (lead-gen)",
            "type": "boolean",
            "description": "On question pages: open each answer author's profile once and save an extra 'author' row with their credential, follower, answer and view counts, the links in their bio and a lead score. Each author row needs its own page load and is billed as a profile.",
            "default": false
          },
          "extractAuthorContacts": {
            "title": "Find public contact e-mails",
            "type": "boolean",
            "description": "With author enrichment, or in Profile mode: visit the person's own website linked in their Quora bio and collect the addresses it publishes for itself, each checked for a mail server. Reference links such as encyclopedias or dictionaries are skipped. Public data only. Billed as a separate contact event, and only when at least one address is found.",
            "default": false
          },
          "authorFilter": {
            "title": "Author filter",
            "type": "string",
            "description": "Keep only answers whose author name or profile slug contains this text (case-insensitive). Leave empty for all authors.",
            "default": ""
          },
          "onlyNewItems": {
            "title": "Only new items (incremental)",
            "type": "boolean",
            "description": "Skip anything an earlier run of this actor in your account already saved with this option on, so a scheduled run returns only new questions, answers and posts.",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "Exclude empty fields",
            "type": "boolean",
            "description": "Leave out empty fields from each row for a tighter dataset.",
            "default": false
          },
          "cookies": {
            "title": "Session cookies (optional)",
            "type": "array",
            "description": "Not needed — everything in this form works without an account. If you add cookies exported from your own signed-in Quora session, pages are opened as that session. Provided as is; your account is used at your own discretion. Array of {\"name\", \"value\"} objects."
          },
          "monitorMode": {
            "title": "Monitor mode (webhook)",
            "type": "boolean",
            "description": "Works like 'Only new items' and, after each run, also POSTs a short list of the new items (type, link, title, author) to the webhook URL below.",
            "default": false
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Where monitor mode sends its list of new items.",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "Connection",
            "type": "object",
            "description": "Nothing to change here — the default is already set up for Quora and is used automatically.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}