List public offerings
GET/explore
Returns the offerings shown on wefunder.com/explore — the curated set of companies that
meet Wefunder's discoverability bar (a soft-confirmed traction threshold plus approval),
one offering per company. An "offering" is a fundraise, addressed by its id
(ofr_...).
Public view (read:public). Reachable with either a server-side (client_credentials)
token or a user access token. Private rounds (e.g. Reg D 506(b)) are never listed, and
low-traction or unapproved companies are excluded — exactly as they are on the website
for a logged-out visitor.
Logged-in view (read:explore). A user access token carrying read:explore gets
what that user sees on wefunder.com/explore: the public offerings plus any the user
qualifies for (accredited-only / Vault deals, invited private rounds), each checked
against the same visibility policy the website applies. The response is a strict
superset of the public one — same fields and ids — with two extra attributes,
publicly_visible and invested, and meta.personalized: true. A server-side key can
never hold read:explore; a token with read:explore but no resolvable user gets the
public view.
Order with sort (default: most raised); paginate with cursor and per_page.
meta.total_count is the number of offerings across all pages, after filters.
Closed rounds (status). By default the list is live rounds. status=closed lists
rounds that finished raising instead, newest closed_at first. It is not limited to one
per company or to the curated explore set: it covers every finished round that
GET /offerings/{id} serves to a logged-out visitor, for companies listed in Wefunder's
public directory. status=all returns the live list first, then the closed list. With
status=closed or status=all, exemption is the only filter accepted, and sort
orders only the live part. Closed rounds follow the public view even for a
read:explore token.
Filters are objective, per-offering terms — exemption family, security type,
TTW vs. live, minimum investment ceiling, close date, amount raised floor. The response
echoes the applied set in meta.filters. An out-of-vocabulary value is a 400 naming
the accepted values. There are deliberately no relevance, quality, or ranking criteria.
Use this endpoint to:
- Discover and monitor active deals
- Build deal aggregators and public listings
- Bulk-list closed rounds (
status=closed)
Request
Responses
- 200
- 400
- 401
- 429
Successful response
A filter or status value is out of vocabulary or malformed, or a live-only parameter
(sort, or any filter but exemption) was sent with status=closed / status=all.
error.message names the accepted values and error.details.parameter the parameter.
Authentication required or token is invalid/expired. This error occurs when:
- No Authorization header is provided
- The access token is invalid or malformed
- The access token has expired
- The access token has been revoked
To resolve: Obtain a new access token using the OAuth 2.0 flow.
Too many requests in a short time period. The API enforces rate limits to ensure fair usage and system stability. When you exceed the limit, you'll receive this error along with headers indicating when you can retry.
Check the X-RateLimit-Reset header to know when your limit will reset.
Consider implementing exponential backoff in your application.
Response Headers
Request limit per hour
Remaining requests
UTC timestamp when the limit resets