Explore

List public offerings

Changed on

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. meta.total_count is the number of offerings across all pages, after filters.

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
get/explore

Request

  • Base URL: https://api.wefunder.com
  • URL: https://api.wefunder.com/explore
  • Auth: one of:
    • OAuth 2 (authorization code, authorization URL https://wefunder.com/oauth/authorize, token URL https://api.wefunder.com/oauth/token; client credentials, token URL https://api.wefunder.com/oauth/token, scopes: read:public)
    • OAuth 2 (authorization code, authorization URL https://wefunder.com/oauth/authorize, token URL https://api.wefunder.com/oauth/token; client credentials, token URL https://api.wefunder.com/oauth/token, scopes: read:explore)

Query parameters

cursorinteger

Cursor-based pagination token. Use the next_cursor value from the previous response's meta object to retrieve the next page of results. Omit this parameter to retrieve the first page.

sort'most_raised' | 'closing_soon' | 'newest' | 'most_investors'

Result ordering:

  • most_raised (default) — highest amount raised first
  • closing_soon — soonest funding close first
  • newest — most recently launched first
  • most_investors — highest investor count first
exemption'reg_cf' | 'reg_d'

Only offerings under this SEC exemption family. Reg CF and Reg D are the supported public filters.

security'safe' | 'equity' | 'convertible_note' | 'revenue_share' | 'debt' | 'fund' | 'other'

Only offerings issuing this kind of security — the security.type value on results.

testing_the_watersboolean

false — only live rounds accepting investments; true — only Testing-the-Waters rounds collecting non-binding reservations.

max_min_investmentnumber

Only offerings whose minimum investment is at most this amount (USD).

closing_beforestring date

Only offerings whose funding close date is on or before this date (ISO 8601). Offerings with no close date are excluded.

min_amount_raisednumber

Only offerings that have raised at least this amount so far (USD).

industrystring[]

Only companies tagged with any of these industries — the curated tags the wefunder.com explore page filters by (see each offering's industries). One value or a comma-separated list; unknown values are a 400 listing the vocabulary. Objective facets, not a ranking.

business_modelstring[]

Only companies with any of these business models (see each offering's business_models). One value or a comma-separated list.

followedboolean

Logged-in view only (read:explore with a user). true — only companies the authorizing user follows on wefunder.com (their watchlist); false — only companies they do not follow. A 400 on the public view, which has no user to filter by.

Response

Successful response

Example response

{
  "data": [
    {
      "id": "ofr_yw3OhusvpfJP4Pk3wRYV1F2R",
      "type": "offering",
      "attributes": {
        "company_name": "ZeroBorder Self-Banking Centers",
        "tagline": "Example tagline",
        "url": "https://wefunder.com/zeroborder",
        "card_image_url": "https://uploads.wefunder.com/uploads/company/custom_card_photo/189517/large_card.jpg",
        "logo_url": "https://uploads.wefunder.com/uploads/company/logo/189517/large_logo.png",
        "exemption": {
          "family": "reg_cf",
          "label": "Reg CF"
        },
        "security": {
          "label": "SAFE",
          "terms": {
            "valuation_cap": "10000000",
            "discount_percent": "20"
          }
        },
        "intended_security": {
          "label": "SAFE"
        },
        "industries": [
          {
            "type": "robotics",
            "label": "Robotics"
          }
        ],
        "business_models": [
          {
            "type": "robotics",
            "label": "Robotics"
          }
        ],
        "status": "open",
        "funding_target": "1000000",
        "min_investment": "100",
        "amount_raised": "642300",
        "investor_count": 1203,
        "started_at": "2025-03-01T12:00:00Z",
        "closes_at": "2025-04-30T03:59:59Z",
        "closed_at": "2025-03-01T12:00:00Z",
        "publicly_visible": true
      },
      "company": "co_8Kd0aB3xQ9k2vF8mNp1zT5wY",
      "warnings": [
        {
          "code": "prior_rounds",
          "message": "This company completed 2 earlier rounds on Wefunder. amount_raised and investor_count cover this offering only, not the company's lifetime total."
        }
      ],
      "etag": "a1b2c3d4e5f6"
    }
  ],
  "meta": {
    "total_count": 119,
    "page_count": 25,
    "has_more": true,
    "sort": "most_raised",
    "filters": {
      "security": "safe",
      "testing_the_waters": false
    },
    "next_cursor": 25
  }
}

Changes

    • info

      the security scope read:public was added to the endpoint's security scheme bearerAuth

    • info

      the security scope read:explore was removed from the endpoint's security scheme bearerAuth

    • breaking

      the response property // became nullable for the status

    • breaking

      the // response's property type changed from object to string for status

    • warning

      removed the optional property /// from the response with the status

    • warning

      removed the optional property /// from the response with the status

    • warning

      removed the optional property /// from the response with the status

    • warning

      removed the optional property /// from the response with the status

    • warning

      added the new other enum value to the //// response property for the response status

    • info

      added the new optional query request parameter business_model

    • info

      added the new optional query request parameter closing_before

    • info

      added the new optional query request parameter exemption

    • info

      added the new optional query request parameter followed

    • info

      added the new optional query request parameter industry

    • info

      added the new optional query request parameter max_min_investment

    • info

      added the new optional query request parameter min_amount_raised

    • info

      added the new optional query request parameter security

    • info

      added the new optional query request parameter testing_the_waters

    • info

      added the non-success response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the optional property / to the response with the status