List feed
One list's companies as JSON or CSV, on a revocable URL that needs no session, with the list's own reasons on every row.
One revocable URL per list, in two formats, found on the list's Connect page. The token in the path is the whole credential, with no session and no header, so treat the URL the way you treat a password. Regenerating it revokes the previous one immediately.
curl -s 'https://prospex.ch/app/lists/feed/<token>.json?limit=200'
curl -s -o list.csv 'https://prospex.ch/app/lists/feed/<token>.csv'
Each row is one company, with the list's reasons and recent events attached.
Every response carries Cache-Control: no-store.
Parameters
| Parameter | Meaning |
|---|---|
| tab | core (the default) or explore. Core is the list's answer to who to sell to. Explore is the wider bucket you have not decided about yet. |
| limit | Rows per page, up to 500. Ignored by the CSV, which streams the whole bucket in one response. |
| cursor | Opaque, and issued by this feed. Follow next_url rather than building one. |
Extra parameters are ignored.
The envelope
| Key | Type | Meaning |
|---|---|---|
| version | integer | The payload contract. 1 today. |
| market | object | The list's id, its name, and when it was last refreshed. |
| generated_at | string | ISO 8601 UTC, the moment this page was built. |
| count | integer | Rows in data on this page. |
| total | integer | Rows in the served bucket, across every page. |
| has_more | boolean | Whether a page follows this one. |
| next_url | string | The next page, absolute and carrying every parameter you sent. Empty on the last page. |
| usage | object | rows_today, daily_limit, rows_this_month and monthly_limit, so a workflow can stop before the feed stops it. |
| data | array | The companies. One flat object per company. |
version is bumped when a field changes meaning or leaves. A new field does not bump it.
Pagination
Follow next_url. It is absolute and carries every parameter you sent.
The cursor carries the build it was issued under. A list's order changes only when a build refreshes it, so a cursor from an older build answers 400 invalid_parameter and asks you to start again.
The CSV takes no cursor. It streams up to 10,000 rows in one response and stops where the account's row budget does.
A row
Flat, with a company_ prefix on the registry facts:
| Field | Meaning |
|---|---|
| fit | The stored word. fit_label is the same judgement in the language of the workspace, so a filter written against fit survives a retranslation. |
| reasons | Why this company is in the list, in the same words the workspace shows. |
| missing | What the list asked about and Prospex does not know for this company. A blank field means missing data, not a failed criterion. Useful for deciding what to enrich. |
| company_group_id | The group this company belongs to, such as the entities of one bank. Every member stays in the list, and rows carrying the same id are one group. company_is_group_primary marks its main company, and company_head_office_id names the company a register branch belongs to. |
| in_crm | Whether your connected CRM already holds this company. Populated from the CRM mirror, so it is as current as the last mirror pass. |
| signals | Up to 3 recent events, newest first, each with its type, its date, its title and a link that opens on the event itself. Suppressed events are absent. |
Position in the list is the rank.
The CSV columns
One line per company, in this order. The second column is the JSON key a Clay column or an n8n expression maps:
| Header | From |
|---|---|
| Company ID | company_id |
| Company | company_name |
| Company UID | company_uid |
| Company URL | company_url |
| Website | company_website |
| Domain | company_domain |
| Tagline | company_tagline |
| City | company_city |
| Canton | company_canton |
| Audience | company_audience |
| Employee Size | company_employee_size |
| NOGA Division | company_sector_code |
| Sector | company_sector |
| Bucket | bucket |
| Fit | fit |
| Fit Label | fit_label |
| Reasons | reasons_text |
| Missing | missing_text |
| Kept | pinned |
| In CRM | in_crm |
| Signal Count | signal_count |
| Latest Signal | latest_signal_date |
| Signal Titles | signal_titles |
| Signal IDs | signal_ids |
| Legal Form | company_legal_form_label |
| Head Office ID | company_head_office_id |
| Head Office | company_head_office_name |
| Group ID | company_group_id |
| Group | company_group_name |
| Group Primary ID | company_group_primary_id |
| Is Group Primary | company_is_group_primary |
| Website Relationship | company_website_relationship |
| Trading Names | company_trading_names |
| NOGA Code | company_noga_code |
| NOGA Level | company_noga_level |
| NOGA Activity | company_noga_label |
| NOGA Source | company_noga_source |
Four of those keys exist only in the CSV, because the JSON field they come from is an array and a cell cannot nest. reasons_text joins with a pipe, missing_text with a comma, and the two signal columns carry the titles and the ids of the same recent events.
Refusals
| Status | error | When |
|---|---|---|
| 404 | unknown_token | No feed answers this URL. Also the answer for a feed switched off and for a list that has been deleted, so a response never confirms that a token existed. |
| 402 | subscription_required | The list owner's subscription is not active. The body carries a billing URL. |
| 400 | invalid_parameter | A cursor this feed did not issue, or one issued before the list was last refreshed. Start again without a cursor. |
| 429 | daily_row_limit | The account has taken its companies for the day. Retry-After points at midnight. |
| 429 | monthly_row_limit | The account has taken its companies for the month. Retry-After points at the 1st. |
| 503 | feed_disabled | The surface is switched off globally. |
The same five codes come out of the project feed.
No push
There is no webhook on a list.
For push delivery, monitor the list (email) or its outreach (webhooks).