a16z Crypto APIa16zcrypto.com ↗
Access a16z Crypto blog posts, portfolio companies, and team profiles via API. Filter by category, tag, author, or format. Search content and extract full post text.
What is the a16z Crypto API?
This API exposes 7 endpoints covering a16z Crypto's blog content, portfolio companies, and team profiles. Use get_all_posts to paginate through the full post archive with filters for category, tag, format, or author, search_posts to run keyword queries across titles and excerpts, and get_post_detail to retrieve the full HTML and plain-text body of any individual article by slug.
curl -X GET 'https://api.parse.bot/scraper/42c480ad-6195-4a75-bf9f-7cafedd46d46/get_all_posts?tag=stablecoins&page=0&limit=5&author=chris-dixon&format=articles&category=research' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace a16zcrypto-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: a16z Crypto SDK — explore blog posts, portfolio, and team."""
from parse_apis.a16z_Crypto import A16ZCrypto, NotFound
client = A16ZCrypto()
# List recent post summaries filtered by category, capped at 5 items total.
for post in client.post_summaries.list(category="research", limit=5):
print(post.post_title, post.post_date)
# Search posts by keyword and drill into the first result's full detail.
result = client.post_summaries.search(query="crypto", limit=1).first()
if result:
detail = result.details()
print(detail.title, detail.url)
for author in detail.authors:
print(author.name, author.slug)
# Fetch a post by slug with typed-error handling.
try:
post = client.posts.get(slug="fund-5")
print(post.title, post.content_text[:100])
except NotFound as exc:
print(f"Post not found: {exc.slug}")
# List portfolio companies.
for company in client.companies.list(limit=5):
print(company.name, company.url)
# List team member summaries and get the first member's full profile.
member_summary = client.team_member_summaries.list(limit=1).first()
if member_summary:
full_profile = member_summary.details()
print(full_profile.name, full_profile.bio[:80])
for social in full_profile.socials:
print(social.platform, social.url)
# Fetch firm info singleton.
firm = client.firm_infos.get()
print(firm.content[:100], firm.url)
print("exercised: post_summaries.list / post_summaries.search / posts.get / companies.list / team_member_summaries.list / details / firm_infos.get")
Fetch blog posts from a16zcrypto.com with optional filters for category, tag, format, and author. Returns up to 20 posts per page from the site's preloaded data. Only one filter can be applied at a time; priority is category > tag > format > author. Paginates via page counter over server-side preloaded data.
| Param | Type | Description |
|---|---|---|
| tag | string | Filter by tag slug (e.g. 'stablecoins', 'defi', 'zero-knowledge'). |
| page | integer | Page number (0-indexed). |
| limit | integer | Max results per page (max 20). |
| author | string | Filter by author slug (e.g. 'chris-dixon'). |
| format | string | Filter by format slug (e.g. 'articles', 'papers-journals-whitepapers', 'podcasts'). |
| category | string | Filter by category slug (e.g. 'research', 'announcements', 'policy', 'company-building', 'tech-trends'). |
{
"type": "object",
"fields": {
"hits": "array of post summary objects each containing objectID, post_id, post_title, post_date, permalink, slug, post_excerpt, taxonomies",
"page": "current page number (integer)",
"nbHits": "total number of results available (integer)",
"hasMore": "boolean indicating if more posts exist beyond preloaded data",
"nbPages": "total number of pages (integer)",
"hitsPerPage": "number of results per page (integer)"
},
"sample": {
"data": {
"hits": [
{
"slug": "the-open-credit-network-investing-in-morpho-part-iii",
"post_id": 19780,
"objectID": "19780-0",
"permalink": "https://a16zcrypto.com/posts/article/the-open-credit-network-investing-in-morpho-part-iii",
"post_date": 1781008102,
"tag_slugs": {},
"post_title": "The open credit network: Investing in Morpho part III",
"taxonomies": {
"author": [
"cap-guy-wuollet"
],
"category": [
"announcements & news"
],
"post_tag": []
},
"post_excerpt": "The world runs on credit...",
"category_slugs": {
"announcements & news": "announcements"
}
}
],
"page": 0,
"nbHits": 20,
"hasMore": true,
"nbPages": 1,
"hitsPerPage": 20
},
"status": "success"
}
}About the a16z Crypto API
Blog Posts and Search
get_all_posts returns up to 20 post summaries per page, each containing post_title, post_date, permalink, slug, post_excerpt, and taxonomies. You can filter by category (e.g. research, policy, company-building), tag (e.g. stablecoins, defi, zero-knowledge), format (e.g. articles, podcasts, papers-journals-whitepapers), or author slug — but only one filter applies per request, with category taking highest priority. The nbHits and nbPages fields let you paginate systematically; hasMore signals whether additional posts exist beyond the preloaded set.
search_posts accepts a required query string and performs case-insensitive matching against post titles, excerpts, descriptions, categories, and tags. Results are paginated using the same page and limit parameters. get_post_detail takes a post slug and returns content_html, content_text, authors (with name and slug per author), and published_date as an ISO string.
Portfolio and Team
get_portfolio_companies returns two arrays: companies (each with name and url linking to the company's external site) and announcements (each with title and url pointing to related blog posts). This gives a structured view of a16z Crypto's disclosed investment portfolio alongside their announcement record.
get_team_members lists every team member with name, slug, role, and url. Pass any slug to get_team_member_detail to get the full bio text, socials array (each entry has platform and url), and the profile page url. get_about_info returns the plain-text content from the firm's about page, useful for context around mission and services.
The a16z Crypto API is a managed, monitored endpoint for a16zcrypto.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when a16zcrypto.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official a16zcrypto.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor a16z Crypto's research output by polling
get_all_postsfiltered by theresearchcategory for new publications. - Build a crypto VC content aggregator by searching posts with
search_postsusing terms like 'DeFi' or 'zero-knowledge'. - Track portfolio company additions over time by periodically calling
get_portfolio_companiesand diffing thecompaniesarray. - Enrich author profiles by combining
get_team_member_detailbio and social links with their post history fromget_all_posts. - Extract full article text via
get_post_detailto feed into summarization or sentiment analysis pipelines. - Map a16z Crypto's investment announcement history by indexing the
announcementsarray fromget_portfolio_companies. - Filter posts by
formatslugpodcaststo compile a structured index of a16z Crypto's podcast episode archive.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does a16z Crypto have an official developer API?+
Can I apply multiple filters at once in `get_all_posts`?+
category > tag > format > author. If you pass both a category and a tag, only the category filter takes effect. To combine filters you would need to apply one server-side and then filter the results client-side.How fresh is the post data, and does `hasMore` mean some posts are inaccessible?+
get_all_posts and search_posts operate against preloaded post data from the site. The hasMore boolean on get_all_posts indicates that additional posts exist beyond this preloaded set. Posts beyond that boundary may not be reachable through the listing and search endpoints, though you can still retrieve any individual post directly using get_post_detail if you have its slug.Does the API return investment amounts, fund sizes, or deal terms for portfolio companies?+
get_portfolio_companies returns company names, external URLs, and announcement links only — no financial figures, investment dates, or ownership stakes are included. You can fork this API on Parse and revise it to add an endpoint that parses deal-specific data if it becomes available on the site.