Built and run by one person.

Why am I getting a 429 when I am nowhere near the rate limit?

Because the total is rarely what trips it. Most callers who hit a 429 are nowhere near the per-minute allowance. Two other things cause it, and neither is about how many calls you made in the minute.

Two changes fix nearly every case.

Read the 429 body before you change anything. A well-built refusal tells you which limit you hit, suggests the endpoint you should have used, and gives you a retry_after_seconds. That is a diagnosis you would otherwise spend an hour guessing at.

By tool, because the shape of the mistake differs: in Excel, put fifty codes in one cell instead of one WEBSERVICE formula per fund, since every formula fires again on every recalculation. In n8n, the HTTP Request node has a Batching option with a size and an interval, and it is usually switched off. In Python or any script, fifty at a time with a small pause between batches. Power Query is usually fine already, because it runs one step after another.

If you are pulling a lot of history, the real answer is often a bulk download file rather than any number of live calls. Related: batching identifiers into one call, timeouts and Retry-After on a big batch, and the Excel WEBSERVICE case. Full write-up: https://www.tigzig.com/post/mf-nav-api-429-rate-limit-aug2026.

Building something like this? How I work covers the rates, the availability and what I take on.

← All Agents FAQ