Y Combinator Reader (Read-Only)
Fetches Y Combinator company data from the yc-oss/api, an unofficial open-source API that indexes all publicly launched YC companies. The data is sourced from YC's Algolia search index and updated daily via GitHub Actions.
This is a read-only data source. It provides company profiles, batch listings, industry/tag breakdowns, hiring status, and diversity data. No write operations exist — the API serves static JSON files.
No authentication required. The API is public and free. Just use curl to fetch JSON endpoints.
Step 1: Verify Prerequisites
This skill only needs curl (to fetch data) and jq (to parse/filter JSON). Both are pre-installed on most systems.
!`(command -v curl > /dev/null && echo "CURL_OK" || echo "CURL_MISSING") && (command -v jq > /dev/null && echo "JQ_OK" || echo "JQ_MISSING")`
If JQ_MISSING, install it:
# macOS
brew install jq
# Linux (Debian/Ubuntu)
sudo apt-get install jq
If jq is unavailable, you can still fetch raw JSON with curl and parse it inline with Python or other tools — but jq makes filtering much easier.
Step 2: Identify What the User Needs
Match the user's request to the appropriate endpoint. See references/api_reference.md for full details.
| User Request |
Endpoint |
Notes |
| Overall YC stats |
meta.json |
Company count, batch list, industry/tag lists |
| All companies |
companies/all.json |
Full dataset (~5,700 companies) — large response |
| Top companies |
companies/top.json |
~91 top-performing YC companies |
| Companies hiring |
companies/hiring.json |
~1,400 currently hiring |
| Non-profit companies |
companies/nonprofit.json |
YC-backed non-profits |
| Diversity data |
companies/black-founded.json, hispanic-latino-founded.json, women-founded.json |
Founder diversity |
| Specific batch |
batches/{batch-name}.json |
e.g., winter-2026.json, spring-2026.json, fall-2025.json |
| Single company profile |
batches/{batch-name}/{slug}.json |
e.g., batches/summer-2009/stripe.json, batches/winter-2009/airbnb.json |
| By industry |
industries/{industry}.json |
e.g., fintech.json, healthcare.json |
| By tag |
tags/{tag}.json |
e.g., ai.json, developer-tools.json |
Batch name format
Batches use {season}-{year} format: winter-2026, spring-2026, summer-2026, fall-2025. Older batches follow the same pattern back to summer-2005. The short form (w09, s21) also works for the per-company endpoint.
Industry and tag name format
Use lowercase with hyphens for multi-word names: real-estate, developer-tools, machine-learning.
Step 3: Execute the Request
Base URL
https://yc-oss.github.io/api/
General pattern
# Fetch and pretty-print
curl -s https://yc-oss.github.io/api/companies/top.json | jq .
# Count companies in a result
curl -s https://yc-oss.github.io/api/batches/winter-2025.json | jq length
# Filter by field (e.g., hiring companies in a batch)
curl -s https://yc-oss.github.io/api/batches/winter-2025.json | jq '[.[] | select(.isHiring == true)]'
# Extract specific fields
curl -s https://yc-oss.github.io/api/companies/top.json | jq '.[] | {name, one_liner, batch, team_size, website}'
# Search by name (case-insensitive)
curl -s https://yc-oss.github.io/api/companies/all.json | jq '[.[] | select(.name | test("stripe"; "i"))]'
Key rules
- Use
-s flag with curl to suppress progress output
- Pipe through
jq for readable output and filtering
- Avoid fetching
companies/all.json unless necessary — it's a large response (~5,700 companies). Prefer more specific endpoints (batches, industries, tags) when possible
- Use
jq select/filter to narrow results client-side when the API doesn't have a specific endpoint for what the user wants
- Batch names are lowercase with hyphens —
winter-2025 not Winter 2025 or W25
- Tag and industry names are lowercase with hyphens —
developer-tools not Developer Tools
Common jq filters
| Filter |
Purpose |
jq length |
Count results |
jq '.[0]' |
First company |
jq '.[:10]' |
First 10 companies |
jq '[.[] | select(.isHiring == true)]' |
Only hiring companies |
jq '[.[] | select(.status == "Active")]' |
Only active companies |
jq '[.[] | select(.team_size > 100)]' |
Companies with 100+ employees |
jq '.[] | {name, one_liner, batch, website}' |
Select specific fields |
jq '[.[] | select(.name | test("query"; "i"))]' |
Search by name |
jq 'sort_by(-.team_size) | .[:10]' |
Top 10 by team size |
Step 4: Present the Results
After fetching data, present it clearly for startup/venture research:
- Summarize key data — company name, one-liner, batch, team size, status, and website
- Highlight hiring status — note which companies are actively hiring (growth signal)
- Include website URLs when the user might want to visit the company
- For batch listings, summarize the batch size and notable companies
- For industry/tag queries, highlight trends (how many companies, which are top/hiring)
- For research queries, provide aggregate stats (count, common industries, team size distribution)
- Note the data freshness — the API updates daily, so data is near-real-time
Step 5: Diagnostics
If a request fails:
| Error |
Cause |
Fix |
404 Not Found |
Invalid batch, industry, or tag name |
Check meta.json for valid names |
Empty array [] |
No companies match the query |
Broaden the search or check spelling |
curl: Could not resolve host |
No internet connection |
Check network connectivity |
| Large/slow response |
Fetching companies/all.json (5,700+ entries) |
Use a more specific endpoint or add jq filters |
To discover valid batch, industry, and tag names:
# List all batches
curl -s https://yc-oss.github.io/api/meta.json | jq '.batches[].name'
# List all industries
curl -s https://yc-oss.github.io/api/meta.json | jq '.industries[].name'
# List all tags (there are 333+)
curl -s https://yc-oss.github.io/api/meta.json | jq '.tags[].name'
Reference Files
references/api_reference.md — Complete endpoint reference with company schema, all endpoint URLs, and research workflow examples
Read the reference file when you need the exact company field schema, valid batch/industry/tag names, or detailed research workflow patterns.
1---2name: yc-reader3description: Look up Y Combinator companies, batches, and startup ecosystem data using the yc-oss API (read-only). Use this skill whenever the user wants to research YC-backed startups, find companies in a specific batch or industry, check which YC companies are hiring, explore top YC companies, or analyze startup trends by sector or tag. Triggers include: "YC companies in fintech", "who's in the latest YC batch", "YC startups hiring", "top Y Combinator companies", "find YC companies tagged AI", "W25 batch", "S24 companies", "YC stats", "Y Combinator portfolio", "startup research", "which YC companies do X", "venture research on YC", any mention of Y Combinator, YC batch, or YC-backed companies in the context of startup research, venture analysis, or market intelligence. This is a read-only data source — the API is a static JSON dataset updated daily.4---5
6# Y Combinator Reader (Read-Only)
7
8Fetches Y Combinator company data from the [yc-oss/api](https://github.com/yc-oss/api), an unofficial open-source API that indexes all publicly launched YC companies. The data is sourced from YC's Algolia search index and updated daily via GitHub Actions.
9
10**This is a read-only data source.** It provides company profiles, batch listings, industry/tag breakdowns, hiring status, and diversity data. No write operations exist — the API serves static JSON files.
11
12**No authentication required.** The API is public and free. Just use `curl` to fetch JSON endpoints.
13
14---
15
16## Step 1: Verify Prerequisites
17
18This skill only needs `curl` (to fetch data) and `jq` (to parse/filter JSON). Both are pre-installed on most systems.
19
20```
21!`(command -v curl > /dev/null && echo "CURL_OK" || echo "CURL_MISSING") && (command -v jq > /dev/null && echo "JQ_OK" || echo "JQ_MISSING")`
22```
23
24If `JQ_MISSING`, install it:
25
26```bash
27# macOS
28brew install jq
29
30# Linux (Debian/Ubuntu)
31sudo apt-get install jq
32```
33
34If `jq` is unavailable, you can still fetch raw JSON with `curl` and parse it inline with Python or other tools — but `jq` makes filtering much easier.
35
36---
37
38## Step 2: Identify What the User Needs
39
40Match the user's request to the appropriate endpoint. See `references/api_reference.md` for full details.
41
42| User Request | Endpoint | Notes |
43|---|---|---|
44| Overall YC stats | `meta.json` | Company count, batch list, industry/tag lists |
45| All companies | `companies/all.json` | Full dataset (~5,700 companies) — large response |
46| Top companies | `companies/top.json` | ~91 top-performing YC companies |
47| Companies hiring | `companies/hiring.json` | ~1,400 currently hiring |
48| Non-profit companies | `companies/nonprofit.json` | YC-backed non-profits |
49| Diversity data | `companies/black-founded.json`, `hispanic-latino-founded.json`, `women-founded.json` | Founder diversity |
50| Specific batch | `batches/{batch-name}.json` | e.g., `winter-2026.json`, `spring-2026.json`, `fall-2025.json` |
51| Single company profile | `batches/{batch-name}/{slug}.json` | e.g., `batches/summer-2009/stripe.json`, `batches/winter-2009/airbnb.json` |
52| By industry | `industries/{industry}.json` | e.g., `fintech.json`, `healthcare.json` |
53| By tag | `tags/{tag}.json` | e.g., `ai.json`, `developer-tools.json` |
54
55### Batch name format
56
57Batches use `{season}-{year}` format: `winter-2026`, `spring-2026`, `summer-2026`, `fall-2025`. Older batches follow the same pattern back to `summer-2005`. The short form (`w09`, `s21`) also works for the per-company endpoint.
58
59### Industry and tag name format
60
61Use lowercase with hyphens for multi-word names: `real-estate`, `developer-tools`, `machine-learning`.
62
63---
64
65## Step 3: Execute the Request
66
67### Base URL
68
69```
70https://yc-oss.github.io/api/
71```
72
73### General pattern
74
75```bash
76# Fetch and pretty-print
77curl -s https://yc-oss.github.io/api/companies/top.json | jq .
78
79# Count companies in a result
80curl -s https://yc-oss.github.io/api/batches/winter-2025.json | jq length
81
82# Filter by field (e.g., hiring companies in a batch)
83curl -s https://yc-oss.github.io/api/batches/winter-2025.json | jq '[.[] | select(.isHiring == true)]'
84
85# Extract specific fields
86curl -s https://yc-oss.github.io/api/companies/top.json | jq '.[] | {name, one_liner, batch, team_size, website}'
87
88# Search by name (case-insensitive)
89curl -s https://yc-oss.github.io/api/companies/all.json | jq '[.[] | select(.name | test("stripe"; "i"))]'
90```
91
92### Key rules
93
941. **Use `-s` flag** with curl to suppress progress output
952. **Pipe through `jq`** for readable output and filtering
963. **Avoid fetching `companies/all.json` unless necessary** — it's a large response (~5,700 companies). Prefer more specific endpoints (batches, industries, tags) when possible
974. **Use `jq` select/filter** to narrow results client-side when the API doesn't have a specific endpoint for what the user wants
985. **Batch names are lowercase with hyphens** — `winter-2025` not `Winter 2025` or `W25`
996. **Tag and industry names are lowercase with hyphens** — `developer-tools` not `Developer Tools`
100
101### Common jq filters
102
103| Filter | Purpose |
104|---|---|
105| `jq length` | Count results |
106| `jq '.[0]'` | First company |
107| `jq '.[:10]'` | First 10 companies |
108| `jq '[.[] \| select(.isHiring == true)]'` | Only hiring companies |
109| `jq '[.[] \| select(.status == "Active")]'` | Only active companies |
110| `jq '[.[] \| select(.team_size > 100)]'` | Companies with 100+ employees |
111| `jq '.[] \| {name, one_liner, batch, website}'` | Select specific fields |
112| `jq '[.[] \| select(.name \| test("query"; "i"))]'` | Search by name |
113| `jq 'sort_by(-.team_size) \| .[:10]'` | Top 10 by team size |
114
115---
116
117## Step 4: Present the Results
118
119After fetching data, present it clearly for startup/venture research:
120
1211. **Summarize key data** — company name, one-liner, batch, team size, status, and website
1222. **Highlight hiring status** — note which companies are actively hiring (growth signal)
1233. **Include website URLs** when the user might want to visit the company
1244. **For batch listings**, summarize the batch size and notable companies
1255. **For industry/tag queries**, highlight trends (how many companies, which are top/hiring)
1266. **For research queries**, provide aggregate stats (count, common industries, team size distribution)
1277. **Note the data freshness** — the API updates daily, so data is near-real-time
128
129---
130
131## Step 5: Diagnostics
132
133If a request fails:
134
135| Error | Cause | Fix |
136|-------|-------|-----|
137| `404 Not Found` | Invalid batch, industry, or tag name | Check `meta.json` for valid names |
138| Empty array `[]` | No companies match the query | Broaden the search or check spelling |
139| `curl: Could not resolve host` | No internet connection | Check network connectivity |
140| Large/slow response | Fetching `companies/all.json` (5,700+ entries) | Use a more specific endpoint or add `jq` filters |
141
142To discover valid batch, industry, and tag names:
143
144```bash
145# List all batches
146curl -s https://yc-oss.github.io/api/meta.json | jq '.batches[].name'
147
148# List all industries
149curl -s https://yc-oss.github.io/api/meta.json | jq '.industries[].name'
150
151# List all tags (there are 333+)
152curl -s https://yc-oss.github.io/api/meta.json | jq '.tags[].name'
153```
154
155---
156
157## Reference Files
158
159- `references/api_reference.md` — Complete endpoint reference with company schema, all endpoint URLs, and research workflow examples
160
161Read the reference file when you need the exact company field schema, valid batch/industry/tag names, or detailed research workflow patterns.