prospex
Prospex docs

Quickstart

Pull your first rows out of Prospex with curl, then decide which of the two credential kinds your integration wants.

1. Get a market feed URL

Open a saved market in the app and go to its Connect page. It carries two URLs, one per format, both ending in a token:

https://prospex.ch/app/markets/feed/<token>.json
https://prospex.ch/app/markets/feed/<token>.csv

The token is the whole credential, so treat the URL the way you treat a password. Regenerating it on that page revokes the old one immediately.

2. Pull the first page

curl -s 'https://prospex.ch/app/markets/feed/<token>.json?limit=5' | jq .

What comes back is an envelope with the market's identity, your usage so far today, and the rows:

{
  "version": 1,
  "market": {"id": 41, "name": "Fiduciaires romandes", "refreshed_at": "2026-08-17T06:00:11Z"},
  "generated_at": "2026-08-21T09:14:02Z",
  "count": 5,
  "total": 218,
  "has_more": true,
  "next_url": "https://prospex.ch/app/markets/feed/<token>.json?limit=5&cursor=NXwx…",
  "usage": {"rows_today": 5, "daily_limit": 5000},
  "data": [
    {
      "company_id": 481203,
      "company_name": "Exemple Fiduciaire SA",
      "company_uid": "CHE-123.456.789",
      "company_website": "https://exemple-fiduciaire.ch",
      "company_canton": "VD",
      "company_employee_size": "11-50",
      "fit": "strong",
      "fit_label": "Strong fit",
      "reasons": ["Fiduciary services in Vaud", "11-50 employees"],
      "missing": [],
      "in_crm": false,
      "signal_count": 2,
      "signals": [
        {
          "signal_type": "capital_increase",
          "event_date": "2026-07-30",
          "title": "Capital increased to CHF 250,000"
        }
      ]
    }
  ]
}

Rows are flat, with a company_ prefix on the registry facts. An n8n node writes {{$json.company_name}}. The market feed has the full field list.

3. Take the rest

Follow next_url until it is empty. It is absolute and ready to fetch:

url='https://prospex.ch/app/markets/feed/<token>.json?limit=200'
while [ -n "$url" ]; do
  page=$(curl -s "$url")
  echo "$page" | jq -c '.data[]' >> market.jsonl
  url=$(echo "$page" | jq -r '.next_url')
done

For a spreadsheet, ask for the CSV instead and skip the loop. It streams the whole bucket in one response.

curl -s -o market.csv 'https://prospex.ch/app/markets/feed/<token>.csv'

Either way, the rows count against one budget: 5,000 rows per account per day. The usage block on each JSON page tells you where you are, and Limits has the rest.

4. If you need to write, not read

Adding companies to a Prospect project, starting research, running a step in your own tooling or approving an opener all go through the API, which uses a bearer key with explicit scopes. Issue one at prospex.ch/app/api-keys/, then:

export PROSPEX_API_KEY=pxk_xxxxxxxx_…
curl -s -H "Authorization: Bearer $PROSPEX_API_KEY" \
  'https://prospex.ch/api/v1/prospect/projects'

Read Authentication for the scope list, and Conventions and errors for the idempotency rule that applies to every mutation.

Where to go next

  • Export a market takes the loop above to the end, including the explore bucket and what to do when a market refreshes mid-walk.
  • Clay and n8n cover the same feed without code.
  • Prospect Connect is the machine surface of a project: feed, webhooks, API and external stages.

Cookie preferences

Necessary cookies always run. The other two are on unless you turn them off.