Prospex docs

Company API

Search, look up and list signals on any Swiss company over the API, with the same filters and rows as the directory, one page at a time.

Three routes over the Swiss company register, on a bearer key holding companies:read.

curl -s -H 'Authorization: Bearer pxk_…' \
  'https://prospex.ch/api/v1/companies?q=machining&canton=VD&size_band=small'

curl -s -H 'Authorization: Bearer pxk_…' 'https://prospex.ch/api/v1/companies/12345'
curl -s -H 'Authorization: Bearer pxk_…' 'https://prospex.ch/api/v1/companies/12345/signals'

Every route spends the row budget: one row per company returned, or per company the signals are about. A company counts once a month, however often you read it.

Any valid company id returns its data. Lists answer 404 for another account's object.

Routes

NamePath
company_search /api/v1/companies
company_detail /api/v1/companies/<str:company_id>
company_signals /api/v1/companies/<str:company_id>/signals

Search parameters

ParameterMeaning
q Free text. Matches the name, the registered purpose, the UID and the address.
canton Two-letter canton codes, repeated or comma-separated.
sector Sector group keys. See the list below.
size_band micro, small, mid or large.
audience b2b, b2c, mixed or no_market.
followed 1 to restrict to companies you follow.
limit Rows per page, up to 100.
cursor Opaque. Follow next_url instead of building one.

An unrecognized parameter answers 400 unknown_parameter. A value outside a parameter's vocabulary answers 400 invalid_parameter and names the accepted set.

Vocabularies

canton
AG, AI, AR, BE, BL, BS, FR, GE, GL, GR, JU, LU, NE, NW, OW, SG, SH, SO, SZ, TG, TI, UR, VD, VS, ZG, ZH
sector
tech_digital, professional, finance, real_estate, retail, industry, construction, hospitality, health, transport, admin_support, other_public
size_band
micro, small, mid, large
audience
b2c, b2b, mixed, no_market

A row

FieldTypeMeaning
company_id integer The Prospex company id. Stable.
company_name string The registered name, as the register writes it.
company_url string The company's page in Prospex.
company_tagline string One line saying what the company does. Empty when unknown.
company_canton string Two-letter code of the registered office.
company_city string The commune of the registered office.
company_sector string The NOGA division, as a phrase.
company_sector_group string The macro-sector key, for grouping.
company_audience string Who the company sells to.
company_employee_size string The headcount bucket. Empty when unknown.
company_legal_form string The eCH-0097 legal-form code, such as 0106 for a corporation. Empty when the register gives none.
company_legal_form_label string The same legal form in words, such as Swiss branch.
company_head_office_id integer|null For a register branch, the Prospex id of the company it belongs to. Null for every other company, and for a branch whose head office Prospex does not hold.
company_head_office_name string That head office's name.
company_group_id integer|null The group this company belongs to, such as the entities of one bank or a head office with its branches. Rows carrying the same id are one group. The id carries over from one rebuild to the next while the group keeps its main company or any of its members.
company_group_name string The group's name, which is its main company's.
company_group_primary_id integer|null The Prospex id of the group's main company.
company_is_group_primary boolean|null Whether this row is the group's main company. Null outside a group.
company_website_relationship string How the website on this row belongs to the company, once Prospex has verified it: official, brand or group, where group means the site is shared by the whole group. Empty until verified.
company_trading_names string Names the company trades under, such as a brand, where its own website ties the name to this legal entity. Several are separated by | . Empty when none is known.
company_noga_code string The company's NOGA 2025 code, two to six digits, such as 953101. Every finer code starts with the coarser one, so 95 covers 953101. Empty when Prospex could not place the company.
company_noga_level string How fine the code is: type (six digits), class (four), group (three) or division (two).
company_noga_label string The code's official English name.
company_noga_source string register when the canton's commercial register codes the company, classifier when Prospex read the code from its purpose and website.
signal_count integer Visible signals on this company, live-counted.
latest_signal_date string|null The most recent event date, ISO.
followed boolean Whether you follow this company.

Search relevance is per-query, so the response carries a band word, never a score.

version is 1 on the company routes and 1 on the signal route. They are separate payload contracts and version independently.

One company's signals

ParameterMeaning
since ISO date or datetime. Only signals recorded after it.
type Signal types, repeated or comma-separated.
limit Rows per page, up to 100.
cursor Opaque, keyset-based. Follow next_url instead of building one.

A row here is a signal-feed row, field for field. Use has_more and next_url to page through results.

Pagination, and the ceiling on search

Follow next_url. It is absolute, carries every parameter you sent, and carries no credential: the key stays in the header, so the URL is safe to log and to paste into a ticket.

Search returns at most 2,000 results for one query. Asking past that answers 400 window_exceeded. Narrow the query, or read a list's companies at /api/v1/markets/<id>/companies, which has no ceiling.

If the search index is unreachable you get 503 search_unavailable.

Default page size 25, maximum 100.