Prospex docs

n8n

A Prospex list feed in an n8n loop with the HTTP Request node, paginated by following one URL, and what to do about refusals and the row budget.

One HTTP Request node reads a whole list. The feed's next_url is absolute and complete, so n8n's built-in pagination handles everything.

The HTTP Request node

SettingValue
Method GET
URL https://prospex.ch/app/lists/feed/<token>.json?limit=200
Authentication None. The token is in the path.
Pagination mode Response Contains Next URL
Next URL {{ $response.body.next_url }}
Complete when {{ !$response.body.next_url }}

Put the URL in a credential or an environment variable rather than in the node.

Getting to one item per company

Each page arrives as one item holding the envelope. Add a Split Out node on the data field and every company becomes its own item, with the flat field names available to every node downstream:

{{ $json.company_name }}
{{ $json.company_domain }}
{{ $json.fit }}
{{ $json.reasons.join(", ") }}

Three fields are arrays: reasons, missing and signals. Join the first two for a message, and split out signals again if you want one item per event.

Handling a refusal

Turn off "Continue On Fail" and let the node stop, then read the body: every refusal answers JSON with a stable error value.

  • daily_row_limit: you have taken the day's companies: 125 a day on Starter, 500 on Pro and 5,000 on Business, 20 on the free plan. Read retry_after from the body, or schedule the workflow later.
  • monthly_row_limit: you have taken the month's companies: 250 a month on Starter, 1,000 on Pro and 10,000 on Business, 20 on the free plan. retry_after points at the 1st.
  • invalid_parameter: the list rebuilt mid-run and your cursor belongs to the old order. Start the run again from the first page.
  • unknown_token: the URL was rotated. Copy the new one from the Connect page.
  • subscription_required: billing. The body carries the URL to fix it.

A run that walks a whole list spends one row per company on it. Running it again costs nothing more that month: a company counts once a month however many days you read it. When the budget runs out mid-run, the last page carries the companies that fit and a next_url that resumes at the first one held back. Check the usage block on each page. Limits has the rest.

Driving a list's outreach instead

The same node shape works against the API, with two additions: an Authorization: Bearer header, and an Idempotency-Key on every mutation. Use the execution id for the key. Send a CRM segment into a project is that workflow written out.