Prospex docs

Limits

One monthly allowance of companies across every surface that hands them out, per plan, a separate API request allowance, and what spends a research unit.

Three separate things get counted: companies served by Prospex, requests made to the API, and research performed inside a project.

Rows: a monthly allowance of companies per plan

A row is one company. Each company counts once a calendar month for the account, whichever surfaces served it and on however many days: the same company opened in the app, pulled from a feed and read through the API and MCP costs one row that month. A page of signals costs one row per company the signals are about.

PlanCompanies a monthDaily ceilingBuilt lists
Free 20 20 1
Starter 250 125 3
Pro 1,000 500 10
Business 10,000 5,000 No limit
Enterprise Agreed with you Agreed with you No limit
  • The daily ceiling is half the monthly allowance on every paid plan. It counts companies new to the month, so re-reading a list you already pulled this month is free.
  • The day resets at midnight Europe/Zurich, and the month at midnight on the 1st.
  • A plan change from the account page applies to both ceilings: an upgrade at once, a downgrade at the next renewal. The pricing page has the prices.

These surfaces take companies and spend rows:

SurfacePathA row is
A company profile in the app /app/companies/<id>/ The company.
A list export /app/lists/<id>/export.csv Each company in the file.
The signal export of a list /app/lists/<id>/signals/export.csv Each company the signals are about.
The list feed, JSON /app/lists/feed/<token>.json Each company on the page.
The list feed, CSV /app/lists/feed/<token>.csv Each company in the file.
The list signal feed, JSON /app/lists/feed/<token>/signals.json Each company the signals are about.
The list signal feed, CSV /app/lists/feed/<token>/signals.csv Each company the signals are about.
The outreach feed /app/outreach/feed/<token>.json Each prospect's company.
An outreach export /app/lists/<list id>/outreach/export.csv Each prospect's company.
Company search /api/v1/companies Each company returned.
One company /api/v1/companies/<id> The company.
Signals on one company /api/v1/companies/<id>/signals The company.
Companies in a list /api/v1/markets/<id>/companies Each company returned.
Signals on a list /api/v1/markets/<id>/signals Each company the signals are about.
Prospects in a project /api/v1/outreach/projects/<id>/prospects Each prospect's company.
One prospect /api/v1/outreach/projects/<id>/prospects/<id> The prospect's company.
The MCP tools that return companies or signals /mcp Each company in the result.
A push to HubSpot, Pipedrive or Attio /app/companies/<id>/push/ Each company sent, from a profile, a list or a scheduled sync.

Every JSON page carries a usage block with rows_today, daily_limit, rows_this_month and monthly_limit, so a workflow can stop on its own terms.

When the budget runs out partway through a page, the page carries the companies that fit, has_more is true, and the cursor resumes at the first company held back. When not one company of a page fits, the page is refused: 429 daily_row_limit with Retry-After pointing at midnight, or 429 monthly_row_limit with Retry-After pointing at the 1st. Companies already served today count nothing, so you can read them again at the ceiling.

A CSV response streams up to 10,000 rows in one go and stops where the budget does, so a single export of a large list can take the whole day. The budget is per account: all users and automations share it.

Browsing on the website: no rows spent

The tables on the website show companies without spending rows. They have their own ceiling instead, of distinct companies a day: 100 on the free plan and 1,000 on a paid one. A company already taken this month browses free. Past the ceiling, a table shows the companies that fit and says how many it held back until midnight, Swiss time.

TablePath
The signal feed /app/feed/
The company tables, directory and discover /app/companies/
Similar companies on a profile /app/companies/<id>/similar/
A list in the app /app/lists/<id>/
The Outreach workspace /app/lists/<id>/outreach/

The browse ceiling applies to the website only. Every feed, export, API and MCP read is a take and spends rows from the monthly allowance.

Requests: 10,000 per account per day

  • Counted on the API only, and reported in X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset on every response. Past it, 429 rate_limited.
  • A request body is capped at 1 MiB. Larger is refused before it is parsed.
  • One POST .../prospects carries at most 100 companies.
  • A list page is at most 500 rows and a project page at most 200. Ask for more and you get the ceiling.
  • Events stay replayable for 30 days. Past that a webhook cannot be replayed, and the state it described is still readable through the feed.

Research units

The expensive thing in the product is research: fetching public pages about a company and reading them. It is metered per company entering research.

  • Adding companies and resolving identity consume no research unit. A whole CRM segment can be posted just to find out which rows Prospex can place.
  • External qualification jobs consume none either. Their dispatch is bounded by the project's outstanding-job allowance, and resumes with later cycles when that is full.
  • A company entering research occupies one place in the cycle budget whether Prospex or your own worker performs it. A corrected submission and an explicit retry of the same input do not occupy another.
  • Prospex-executed and externally executed research are counted separately on every cycle.
  • One project has at most one queued or running cycle, and the project budget is a ceiling per cycle rather than per month.

Objects

  • Built lists per account follow the plan, in the table above. Imported lists do not count.
  • Imported lists, projects and API credentials have no per-account cap.
  • A webhook endpoint that fails 20 times in a row is switched off, and its own page says why.