{
  "openapi": "3.0.1",
  "info": {
    "title": "Wellfound (AngelList) Jobs, Companies, Salary & Equity Scraper",
    "description": "Scrape Wellfound (AngelList) startup jobs, companies, salaries and equity — no login. Four modes (search, job-details, company-jobs, company-details) with parsed salary + equity ranges, funding stage, company size, markets, seniority inference, dedup, monitoring and a run analytics summary.",
    "version": "0.0",
    "x-build-id": "PhnzprSzk1VMi1rJi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/brilliant_gum~wellfound-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-brilliant_gum-wellfound-jobs-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~wellfound-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-brilliant_gum-wellfound-jobs-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~wellfound-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-brilliant_gum-wellfound-jobs-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",
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "job-details",
              "company-jobs",
              "company-details"
            ],
            "type": "string",
            "description": "What to scrape. 'search' = jobs by role/location/remote; 'job-details' = one record per Wellfound job URL; 'company-jobs' = all live jobs of a company; 'company-details' = a company profile (funding, size, markets, social) optionally with its jobs.",
            "default": "search"
          },
          "role": {
            "title": "Role / keyword",
            "type": "string",
            "description": "(search) Role or keyword to search, e.g. \"software engineer\", \"product designer\". Slugified into Wellfound's /role/ SEO pages. Required for search unless a location is given."
          },
          "roles": {
            "title": "Multiple roles (OR)",
            "maxItems": 10,
            "type": "array",
            "description": "(search) Optional. Several roles searched in one run (results merged + deduped). Max 10. Leave empty to use the single role above.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "(search) City / region, or \"remote\". \"remote\" -> /role/r/{role}; a city -> /role/l/{role}/{city}. Empty = anywhere."
          },
          "locations": {
            "title": "Multiple locations",
            "maxItems": 10,
            "type": "array",
            "description": "(search) Optional. Several locations searched in one run (results merged + deduped). Max 10.",
            "items": {
              "type": "string"
            }
          },
          "countryName": {
            "title": "Country",
            "type": "string",
            "description": "(search) Optional country to search in, e.g. \"India\", \"United States\". Treated as an additional location (Wellfound has no separate country facet), merged with location / locations."
          },
          "jobUrls": {
            "title": "Job URLs",
            "type": "array",
            "description": "(job-details) Wellfound job URLs (https://wellfound.com/jobs/{id}-{slug}), or bare \"{id}-{slug}\" / numeric id. Each yields one detailed job record parsed from the job page's schema.org data.",
            "items": {
              "type": "string"
            }
          },
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "(company-jobs / company-details) Company slugs (e.g. \"openai\") or full URLs (https://wellfound.com/company/{slug}). Company pages are heavier and take longer than search/job pages.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "(search) Keep only remote roles (forces the /role/r/ remote search and filters the results).",
            "default": false
          },
          "jobType": {
            "title": "Job type filter",
            "enum": [
              "",
              "fulltime",
              "parttime",
              "contract",
              "internship",
              "cofounder"
            ],
            "type": "string",
            "description": "Keep only this employment type. \"Any\" returns all types.",
            "default": ""
          },
          "datePosted": {
            "title": "Date posted (max age)",
            "enum": [
              "",
              "24h",
              "3d",
              "7d",
              "14d",
              "30d"
            ],
            "type": "string",
            "description": "Keep only jobs posted within this window (by the posting's live/posted date). \"Any time\" disables the filter. Records with no known posted date are always kept.",
            "default": ""
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum job/company records to output in total. 0 = no cap.",
            "default": 50
          },
          "maxPages": {
            "title": "Max search pages",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "(search) Max result pages to fetch per role x location. Each page carries ~20 startups' worth of highlighted jobs. Capped by the page count Wellfound reports.",
            "default": 5
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "markdown",
              "text",
              "html"
            ],
            "type": "string",
            "description": "Output format for job descriptions. Wellfound serves markdown; 'text' strips it, 'html' renders it.",
            "default": "markdown"
          },
          "parseSalary": {
            "title": "Parse salary + equity",
            "type": "boolean",
            "description": "Parse the combined compensation string (e.g. \"$80k – $90k • 5.0% – 10.0%\") into structured salary{min,max,currency,period} and equity{min,max,hasEquity}.",
            "default": true
          },
          "includeCompanyJobs": {
            "title": "Include company jobs (company-details)",
            "type": "boolean",
            "description": "(company-details) Also embed the company's live job listings inside the company record.",
            "default": true
          },
          "computeAnalytics": {
            "title": "Run analytics summary",
            "type": "boolean",
            "description": "Save a RUN_SUMMARY record (counts, salary/equity coverage, remote share, average salary, seniority/job-type/size/stage breakdown, top markets + companies, blocked pages) to the key-value store.",
            "default": true
          },
          "deduplicate": {
            "title": "Deduplicate",
            "type": "boolean",
            "description": "Drop duplicate records using a company+title+location hash (dedupKey).",
            "default": true
          },
          "deduplicateKeyStore": {
            "title": "Cross-run dedup key store",
            "type": "string",
            "description": "Named key-value store to persist seen dedupKeys across scheduled runs. Empty = in-run dedup only."
          },
          "monitoringMode": {
            "title": "Monitoring mode (new only)",
            "type": "boolean",
            "description": "Only output records not seen in a previous run (requires a cross-run dedup key store). Great for scheduled new-job alerts.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Concurrency for page / detail / company fetches.",
            "default": 5
          },
          "maxChallengeRetries": {
            "title": "Max challenge retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Retry attempts with fresh proxy sessions on temporary failures (403/429/5xx/timeout).",
            "default": 4
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "Proxies are included and configured automatically — leave the default in place.",
            "default": {
              "useApifyProxy": true,
              "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}