# Swiss Buying Signals in Clay and n8n

10 Aug 2026 6 min read

Clay, n8n, your sequencer and CRM can already enrich and route companies. Prospex supplies the Swiss company list they need: companies that match your market, the reasons they match, missing facts, and recent activity.

This guide shows how to pull one Prospex market as JSON or CSV and use it in Clay or n8n. Create the market and copy its feed URL. Then map the fields your workflow needs.

Swiss company data is spread across registers, gazettes, trademark records and job boards. Prospex combines those sources before the list reaches your workflow.

## Start from a market

Each feed belongs to one market and reflects the companies in its Core or Explore tab. In `/app/markets/`, describe the companies you sell to and add example customers. Then build the market. Core contains the closest matches. Explore contains the broader candidates. Each company includes the reasons behind its fit.

The feed returns Core by default. Add `?tab=explore` for Explore. If the URL already has a query string, append `&tab=explore`.

Open **Connect** from the market. The Connect page shows a JSON feed URL and a CSV feed URL. Both contain the same access token.

> `https://prospex.ch/app/markets/feed/{token}.json`
> `https://prospex.ch/app/markets/feed/{token}.csv`

The token is embedded in the URL, so no separate authorization header is required. Anyone with the URL can read the market. Store it in your automation's credential store. If it is exposed, regenerate it from the Connect page. The old URL becomes invalid immediately.

## The JSON feed

> `curl -s 'https://prospex.ch/app/markets/feed/{token}.json?limit=5'`

The response contains market metadata, pagination fields, usage, and a `data` array. A shortened response looks like this:

> `{`
> `"version": 1,`
> `"market": {"id": 12, "name": "Romandie, 11–50", "refreshed_at": "…"},`
> `"count": 5,`
> `"total": 214,`
> `"has_more": true,`
> `"next_url": "https://prospex.ch/app/markets/feed/…?limit=5&cursor=…",`
> `"usage": {"rows_today": 5, "daily_limit": 5000},`
> `"data": [ … ]`
> `}`

Each item in `data` represents one company. Fields commonly used for joins and filters are at the top level. Recent events are nested under `signals`.

- `company_id`, `company_url`: the identity of the company, and the page a human opens.
- `fit` and `fit_label`: `fit` is the stable value for automation rules (`strong`, `good`, or `possible`). `fit_label` is the translated label shown to a person.
- `reasons`: why this company is in your market, in sentences, one per line of the workspace.
- `missing`: facts Prospex has not verified yet. A missing fact is not evidence that the company failed the criterion.
- `bucket`: `core` or `explore`.
- `pinned`, `decided`, `in_crm`: `pinned` is true for a company you kept by hand. `decided` is true when you accepted or rejected the company. `in_crm` is true when it has been sent to your CRM.
- `signal_count`, `latest_signal_date`, and `signals`: the last few dated events on the company, each with its type, title, date, Prospex link, and original source.

Each row also carries company attributes: `company_name`, `company_uid`, `company_website`, `company_domain`, `company_canton`, `company_city`, `company_sector`, `company_sector_code`, `company_sector_group`, `company_tagline`, `company_employee_size`, and `company_audience`.

Use `company_domain` when the other tool is keyed by website. Use `company_uid` when matching Swiss register data.

## Separate fit from timing

`fit` tells you why a company belongs in the market. `signals` tells you what changed there recently. Each company includes its latest signal date and up to three recent events. An event contains its type, title, date, Prospex link, and original source.

Use `latest_signal_date` for a quick recency filter. Open the nested `signals` array when the workflow needs the event itself. For example, an n8n branch can send a strong-fit company with a recent capital increase to account research, together with the source URL. A strong fit with no recent event can remain in the market for later review.

## Follow next_url to paginate

Pages are 100 rows by default and 500 at most. When there are more, `next_url` is a complete absolute URL. Request it, and keep requesting until `next_url` is empty.

> `url = "https://prospex.ch/app/markets/feed/{token}.json?limit=500"`
> `while url:`
> `page = requests.get(url).json()`
> `yield from page["data"]`
> `url = page["next_url"]`

A cursor is tied to the market build that created it. If the market refreshes between requests, the old cursor returns `400`. Restart from the first feed URL to read the new ordering.

## Clay

Choose whether Prospex creates the table or enriches one you already have.

**Create a new table from Prospex.** Fetch the JSON feed and select the `data` array. Then create one row per company. Refresh on a schedule, and your table becomes a mirror of the market.

**Match Prospex to a table you already have.** Import the CSV into a second table, then match its `Domain` column to the domain in your existing table. The CSV provides one row per company with fixed headers. Arrays are flattened into cells: `Reasons` uses pipes and `Missing` uses commas. Use JSON when the workflow needs full event details.

Prospex supplies company fit and recent activity. Clay can add the people and contact details.

## n8n

Schedule Trigger → HTTP Request → Split Out on `data`.

1. Add a **Schedule Trigger**.
2. Add an **HTTP Request** and paste the JSON feed URL from Prospex.
3. Enable pagination. Use `{{ $response.body.next_url }}` as the next request URL and stop when `{{ $response.body.has_more }}` is false.
4. Add **Split Out** and select `data`.

Top-level company fields are now available as `{{ $json.company_name }}`, `{{ $json.company_domain }}`, and `{{ $json.fit }}`. The `signals` field remains a nested array. Add a second **Split Out** when the next node needs one item per event.

A common branch is an IF node on `{{ $json.fit }}`: route strong fits to contact enrichment or account research, and send the rest to a review sheet. Another is a Filter on `{{ $json.missing }}` containing `website`: it sends companies whose `missing` array contains `website` to a website-discovery step.

## Daily limit

An account can pull 5,000 rows per day across market feeds, signal downloads and CSV exports. When the quota is exhausted, the feed returns `429` with a `Retry-After` header. The Connect page shows today's usage and reset time. The budget resets at midnight Europe/Zurich.

For now, poll the feed on a schedule. Webhook delivery is planned.

The market feed ends at company level. Add contacts and email addresses with your enrichment tool, then route qualified records to your sequencer or CRM. If you need the underlying register publications, see [the Zefix REST API](https://prospex.ch/guides/zefix-rest-api/) and [the SHAB API](https://prospex.ch/guides/shab-api/) guides.

## More guides

- [How to Track Swiss Companies That Just Raised Capital](https://prospex.ch/guides/track-capital-increases/)
- [Reading SHAB/FOSC: A Practical Guide for Salespeople](https://prospex.ch/guides/reading-shab-fosc/)
- [Where Swiss Company Data Actually Lives](https://prospex.ch/guides/swiss-company-data-sources/)
- [Swiss Company Changes: What They Tell You and What They Do Not](https://prospex.ch/guides/buying-signals-swiss-market/)
- [Zefix, Moneyhouse or SHAB: Which One to Use](https://prospex.ch/guides/compare-swiss-company-data/)
- [What Happens When a Swiss Company Increases Its Capital](https://prospex.ch/guides/what-capital-increase-means/)
- [Prospecting in Romandie: A Field Guide](https://prospex.ch/guides/prospecting-romandie/)
- [Swiss Trademark Filings as an Early Product-Launch Signal](https://prospex.ch/guides/trademark-filings-signal/)
- [How to Check Out a Swiss Company: Name, UID, and What the Registers Tell You](https://prospex.ch/guides/check-swiss-company/)
- [How to Monitor a Swiss Company for Changes, Free](https://prospex.ch/guides/monitor-swiss-company/)
- [How Big Is That Swiss Company? Sizing a Private Firm from Public Records](https://prospex.ch/guides/size-a-swiss-company/)
- [The Zefix REST API: Endpoints, Credentials and Identifiers](https://prospex.ch/guides/zefix-rest-api/)
- [The SHAB API: Reading the Swiss Gazette Programmatically](https://prospex.ch/guides/shab-api/)
- [Sizing a Swiss Target Market from Public Data](https://prospex.ch/guides/size-a-swiss-target-market/)
- [The 100 Addresses That Host the Most Companies in Switzerland](https://prospex.ch/guides/domiciliation-addresses-switzerland/)
- [Finding Companies Like Your Best Customers in Switzerland](https://prospex.ch/guides/similar-companies-switzerland/)
- [Reactivating Dormant and Closed-Lost Accounts](https://prospex.ch/guides/reactivate-dormant-accounts/)
- [How Big Is the Swiss B2B Market, Really?](https://prospex.ch/guides/swiss-b2b-market-size/)
- [Who Is Entering Switzerland: Foreign Subsidiaries and Branches](https://prospex.ch/guides/foreign-companies-entering-switzerland/)
- [Swiss Directorship Concentration: What a Year of Officer Changes Shows](https://prospex.ch/guides/swiss-directorship-concentration/)
- [Gender Composition of Swiss Company Officers](https://prospex.ch/guides/gender-swiss-company-officers/)

[All guides](https://prospex.ch/guides/)

## The numbers behind this

- [The 25 largest capital increases in Switzerland (last 12 months)](https://prospex.ch/signals/largest-capital-increases/)
- [Newest Swiss trademark filings (last 90 days)](https://prospex.ch/signals/newest-trademarks/)

[All rankings](https://prospex.ch/signals/)

Build this market in Prospex and keep it current.

[See an example market](https://prospex.ch/market-builder/)

[Or build your own, free](https://prospex.ch/app/accounts/signup/)
