Prospex docs

List API

Your lists, their companies and what changed on them, read with a scoped bearer key. The same rows as the token feeds, and what each route costs.

Four routes over your own lists, on a bearer key holding markets:read. A list is built from a description, imported, or made of the companies you follow. The routes keep the name markets for all three. Building a list, importing companies and turning on monitoring stay in the browser.

curl -s -H 'Authorization: Bearer pxk_…' 'https://prospex.ch/api/v1/markets'
curl -s -H 'Authorization: Bearer pxk_…' 'https://prospex.ch/api/v1/markets/41'
curl -s -H 'Authorization: Bearer pxk_…' \
  'https://prospex.ch/api/v1/markets/41/companies?bucket=core&band=strong,good'
curl -s -H 'Authorization: Bearer pxk_…' \
  'https://prospex.ch/api/v1/markets/41/signals?since=2026-08-01'

A key holding watches:read, from before watches became monitoring on a list, reads these routes too.

What each route costs

RouteWhat it costs
GET /api/v1/markets Your lists, with their origin, state, Core count and monitoring. Costs no rows.
GET /api/v1/markets/<id> One list. For a built list, also its definition and the queries the build ran. Costs no rows.
GET /api/v1/markets/<id>/companies One page of the list's companies. One row of the budget per company.
GET /api/v1/markets/<id>/signals What changed on the list's companies, newest first. One row of the budget per company the signals are about.

The two metadata routes spend nothing. Reading companies costs a row per company, and reading signals a row per company they are about.

Another account's list answers 404.

A list

FieldTypeMeaning
origin string built (a list built from a description), imported, or follows (the companies you follow).
state string ready once the list can be read. A built list also passes through building and refreshing.
core_count integer How many companies are in the list's Core.
definition string|null The description a built list was made from. Null on an imported or followed list.
queries array|null Detail route only. The searches the build ran, your own words first. Null on an imported or followed list.
monitoring object|null Null when monitoring is off. Otherwise since, paused, topics, instant_topics, instant_enabled and new_signals, the signals on the list's topics since monitoring started.

An imported or followed list holds all its companies in Core, so bucket=explore reads empty on it.

Resolved paths

NamePath
market_index /api/v1/markets
market_detail /api/v1/markets/<str:market_id>
market_companies /api/v1/markets/<str:market_id>/companies
market_signals /api/v1/markets/<str:market_id>/signals

Company parameters

ParameterMeaning
bucket core (the default) or explore. The token feed calls this tab; both are published and neither is being renamed.
band strong, good, possible or weak, repeated or comma-separated. Narrows what this page shows within the ranking.
limit Rows per page, up to 100.
cursor Opaque, and carrying the build it was issued under.

A parameter this route does not accept answers 400 unknown_parameter. That includes tab, which is the token feed's name for bucket.

Signal parameters

ParameterMeaning
since ISO date or datetime. Only signals recorded after it.
type Topic keys, repeated or comma-separated. Narrows within the list's own topics.
limit Rows per page, up to 100.
cursor Opaque. Follow next_url instead of building one.

Signals are newest first, from the companies in the list's Core, on the list's topics. The route answers whether monitoring is on or not. The cursor is keyset-based, so a signal recorded between two requests is never skipped.

A signal row is a signal-feed row, field for field, so the signal feed page has the field table.

Topics

KeyWhat it covers
company_structure Company structure
leadership Leadership and teams
products_positioning Products and positioning
growth_finance Growth and finance
company_news Company news

A company row

A row here is identical to a row from the list's token feed. The list feed page has the field table.

Each row carries up to 3 recent events on the company, so a workflow that has just been told "this company fits, and here is why" also knows what kind of week the company is having.

Fit is a word

BandWhat it claims
strong Answers your definition at least as well as the customers you called ideal.
good A clear match on your definition, below the anchored cut.
possible Worth a look. Partial match on your definition.
weak Ranked below both buckets.

No route carries a numerical score. The underlying number varies by query and by pool, so it is not comparable across lists. Use the band word.

Pagination

Follow next_url. It is absolute, carries every parameter you sent, and carries no credential.

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. Start again without a cursor.

Maximum page size 100. version is 1, the same contract the token feed publishes.