{
  "openapi": "3.0.1",
  "info": {
    "title": "Y Combinator Companies, Batches & Founders",
    "description": "Scrape the Y Combinator startup directory as data. One row per company: name, website, one-liner, description, batch (W25), status, industry, tags, team size, region, launch date — filtered by batch, industry, status, region or keyword. Optionally adds founders and socials. No API key, no login.",
    "version": "0.1",
    "x-build-id": "Ec8ajATcp9FDcTOZu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/insight.solutions~yc-companies-directory/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-insight.solutions-yc-companies-directory",
        "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/insight.solutions~yc-companies-directory/runs": {
      "post": {
        "operationId": "runs-sync-insight.solutions-yc-companies-directory",
        "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/insight.solutions~yc-companies-directory/run-sync": {
      "post": {
        "operationId": "run-sync-insight.solutions-yc-companies-directory",
        "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": {
          "batches": {
            "title": "Batches",
            "type": "array",
            "description": "Which YC batches to return. Long form (`Winter 2025`, `Summer 2013`, `Spring 2026`, `Fall 2025`) or YC's own short form (`W25`, `S13`, `X26` for Spring, `F25` for Fall); several are read as \"any of these\". **Leave empty for every batch** — all 6,200-odd companies YC has ever funded. A name that is not a batch gets a free diagnostic row naming the nearest ones that are, checked against the directory's own live list at run start.",
            "items": {
              "type": "string"
            }
          },
          "topCompaniesOnly": {
            "title": "YC Top Companies only",
            "type": "boolean",
            "description": "Only the companies YC itself flags as its top ones — about 90 of 6,200. That is the list Airbnb, Stripe, Coinbase, DoorDash and Instacart are on, and it is one request to get all of it.",
            "default": false
          },
          "nonprofitOnly": {
            "title": "Nonprofits only",
            "type": "boolean",
            "description": "Only YC's nonprofit companies. `nonprofit` is a field on every company but it is **not** one of the index's filterable facets, so this one filter is applied after the results arrive rather than in the query — it costs the same requests as the unfiltered run and returns fewer rows.",
            "default": false
          },
          "isHiring": {
            "title": "Hiring",
            "enum": [
              "any",
              "yes",
              "no"
            ],
            "type": "string",
            "description": "Restrict to companies with open roles on Work at a Startup, or to those without. About a quarter of the directory is hiring at any moment. The API also accepts `true`, `false` and `null` here, for callers that prefer a boolean.",
            "default": "any"
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "default",
              "launchDate"
            ],
            "type": "string",
            "description": "**Relevance** is YC's default ordering — its own ranking, which puts the best-known companies first for an unfiltered read. **Launch date** is the directory's \"newest first\" index: the most recently launched companies at the top. It changes the order rows arrive in, and therefore which ones you get when `maxCompanies` cuts the list short.",
            "default": "default"
          },
          "queries": {
            "title": "Search terms",
            "type": "array",
            "description": "Full-text search across company names, one-liners and descriptions — `fintech`, `AI agents`, `developer tools`. Each term is a separate search and the results are merged; a company matching two terms is returned once, attributed to the first. Combine with the filters below and you get the intersection: `queries: [\"AI agents\"]` plus `isHiring: yes` is every hiring YC company whose description mentions AI agents.",
            "items": {
              "type": "string"
            }
          },
          "industries": {
            "title": "Industries",
            "type": "array",
            "description": "YC's own industry taxonomy, two levels deep in one flat list: the parents (`B2B`, `Consumer`, `Healthcare`, `Fintech`, `Industrials`, `Real Estate and Construction`) and the children (`Payments`, `Recruiting and Talent`, `Drug Discovery and Delivery`, `Climate`). 59 values at the last count, and the run validates against the live list. Several values are read as \"any of these\".",
            "items": {
              "type": "string"
            }
          },
          "statuses": {
            "title": "Company status",
            "type": "array",
            "description": "`Active`, `Acquired`, `Public` or `Inactive` — YC's four. `Inactive` means dead, and there are over a thousand of them: this is the only public list of YC failures, and leaving it out of a market map is how you get survivorship bias. Empty means all four.",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "YC's region facet, which mixes continents, countries and remote-work labels in one list: `United States of America`, `America / Canada`, `Europe`, `India`, `Latin America`, `Remote`, `Fully Remote`, `Partly Remote`. A company usually carries two or three of them. Several values are read as \"any of these\".",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "title": "Tags",
            "type": "array",
            "description": "The free-form labels YC puts on a company: `SaaS`, `Marketplace`, `Artificial Intelligence`, `Generative AI`, `Developer Tools`, `Open Source`, `Biotech`. Finer-grained than `industries` and much longer — several hundred values. Several tags are read as \"any of these\".",
            "items": {
              "type": "string"
            }
          },
          "includeFounders": {
            "title": "Include founders and socials",
            "type": "boolean",
            "description": "Read each company's own YC page as well, adding **founders** (name, title, LinkedIn, X), the company's LinkedIn, X, Facebook, Crunchbase and GitHub links, the year it was founded, its city and country, how many roles it has open, and its recent press. **This is one extra request per company** — 500 companies is 500 extra page loads and several minutes — so it is off by default. The company rows cost the same either way; only the run takes longer.",
            "default": false
          },
          "founderRows": {
            "title": "Also emit one row per founder",
            "type": "boolean",
            "description": "Add a `founder` row for every named founder — company, batch, name, title, LinkedIn, X — alongside the company row that already lists them. Useful when the founder is your unit of analysis rather than the company. Needs `includeFounders`, and founder rows are charged separately.",
            "default": false
          },
          "maxCompanies": {
            "title": "Maximum companies",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "How many company rows to return, across every batch and search term in this run. The whole directory is about 6,200; the default of 500 keeps a first run quick and cheap. Raising it costs one request per extra 1,000 companies, not one per company.",
            "default": 500
          },
          "maxRunSecs": {
            "title": "Maximum run time (seconds)",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "Wall-clock budget for the whole run. When it is reached the Actor stops fetching, keeps and bills for every row it already wrote, and files a free diagnostic row saying where it stopped. Nothing is charged for work that did not happen. Raise it for a whole-directory run with `includeFounders`, which is thousands of page loads.",
            "default": 240
          },
          "maxConcurrency": {
            "title": "Requests in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many searches — and, separately, how many company pages — are read at once. Each parallel worker keeps its own proxy session, so one refused request burns only its own exit IP. Requests within one worker are spaced 250–600 ms apart whatever this is set to.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Both ycombinator.com and the search index answer datacenter addresses, so the default is Apify's datacenter proxy — much cheaper than residential, and the proxy cost is already inside the per-row price. Switch to residential only if you see `blocked` rows. Sessions rotate automatically when an exit IP is refused.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}