API & CLI
The public REST API and the @feeny/cli — built for humans and agents.
Overview
Feeny has a public read API and a command-line client, both built for humans and AI agents. If you'd rather pull data from your terminal, a script, or an agent than click through the site, this is for you.
Everything here is a public read surface today — news and products. More endpoints (jobs, companies, and authenticated actions) are on the roadmap.
The feeny CLI
The fastest way to get Feeny data outside the app is the CLI, published on npm as @feeny/cli. No install required — run it with npx.
Search the news:
npx @feeny/cli news list "ai" --limit 5
Browse product launches by category:
npx @feeny/cli products list --category artificial-intelligence
Built for agents too
Every command supports --json for clean, parseable output on stdout (all logs and errors go to stderr, so a piped --json stream is always safe to parse):
npx @feeny/cli products list --category artificial-intelligence --json
npx @feeny/cli news list "ai" --limit 10 --json
Exit codes are meaningful: 0 success · 1 error · 2 usage · 4 rate-limited (honors Retry-After) · 5 auth. Point it at a different environment with --base-url or the FEENY_BASE_URL environment variable.
The REST API
The CLI is a thin client over the public REST API at /api/v1/*. You can call it directly:
curl "https://feeny.ai/api/v1/news?q=ai&limit=5"
The API is unauthenticated for public reads today and rate-limited per client IP. It's designed to be generous for real integrators and stingy toward scripted abuse.
What's available now
- News — trending articles across the tech and startup world.
- Products — curated product launches, filterable by category.
What's coming
- Jobs & companies — job search surfaces, exposed through new
/api/v1routes. - Authenticated commands — bookmarks, tools & profile actions, via API keys & bearer tokens.
- Feeny over SMS and inside Claude / Codex — the same data, delivered wherever you work.
If you're building on the API and want something that isn't here yet, that feedback is genuinely useful — it helps decide what ships next.
For AI agents: llms.txt
If you're pointing an agent at Feeny, start with /llms.txt — our machine-readable map of the site, following the llms.txt standard. It explains what's worth fetching and how we're structured: where company profiles live, which pages are citable, how to query the API, and a featured list of fully-researched company profiles.
curl https://feeny.ai/llms.txt
Company profiles also embed schema.org JSON-LD (Organization + JobPosting), so an agent can extract structured facts without parsing prose.
Use Feeny as a skill
Below is a drop-in skill file that teaches an agent (Claude Code, or anything that reads markdown instructions) how to query Feeny. Copy it to .claude/skills/feeny/SKILL.md in your project — or paste it anywhere your agent reads instructions from.
---
name: feeny
description: Query Feeny (feeny.ai) for tech/startup news, product launches, and VC funds — via the @feeny/cli or its public REST API. Use when the user asks about startup news, trending products, or venture funds.
---
# Feeny
Feeny is a curated directory of tech & AI companies, their open jobs, plus startup news, product launches, and VC funds. This skill covers the PUBLIC READ surface — no auth, no API key, no install.
## Orientation
Fetch `https://feeny.ai/llms.txt` first for a map of the site (what's citable, how it's structured, featured company profiles).
## The CLI (preferred)
Run via `npx` — nothing to install. ALWAYS pass `--json` for parseable output.
npx @feeny/cli news list "ai" --limit 5 --json
npx @feeny/cli news get <id> --json
npx @feeny/cli products list --category artificial-intelligence --json
npx @feeny/cli products get <id> --json
npx @feeny/cli funds list --json
npx @feeny/cli funds get sequoia-capital --json
Flags: `--json` (machine output) · `--limit` / `-n` (1–50, default 20) · `--base-url` (or `FEENY_BASE_URL`) to target another environment.
**Agent contract:** with `--json`, clean JSON goes to **stdout** and every log or error goes to **stderr** — a piped `--json` stdout is always safe to parse.
**Exit codes:** `0` ok · `1` error · `2` usage · `4` rate-limited (honor the `Retry-After` header) · `5` auth.
## The REST API
The CLI is a thin client over `https://feeny.ai/api/v1`. Call it directly if you can't shell out. Unauthenticated; rate-limited per IP.
curl "https://feeny.ai/api/v1/news?q=ai&limit=5"
curl "https://feeny.ai/api/v1/news/{id}"
curl "https://feeny.ai/api/v1/products?category=artificial-intelligence"
curl "https://feeny.ai/api/v1/products/{id}"
curl "https://feeny.ai/api/v1/funds"
curl "https://feeny.ai/api/v1/funds/{slug}"
Responses are JSON with the collection under a named key plus a total, e.g. `/news` returns `{ "articles": [...], "total": 123 }`.
## Company profiles
Deep, editorially-researched profiles live at `https://feeny.ai/companies/<slug>` (open roles at `/companies/<slug>/jobs`). These are the pages to cite for "what is <company>" or "is <company> hiring". They embed schema.org JSON-LD (Organization + JobPosting) for precise extraction. Not every company has a profile — less-covered ones appear in job search only.
## Rules
- Prefer the CLI with `--json`; fall back to `curl` on the REST API.
- On exit code `4` (or HTTP 429), back off and honor `Retry-After` — don't retry in a tight loop.
- Jobs/companies have no `/api/v1` routes yet, and there are no authenticated commands — don't invent endpoints. Cite the company profile pages instead.
Jobs, companies, and authenticated actions aren't in the API yet — the skill deliberately says so, to stop an agent inventing endpoints that don't exist.