Market structure data without the plumbing
SquawkFlow exposes the same public market-structure data used by our free tools through a stable JSON API. No account and no key: anonymous requests get 60 per hour per IP address, which is the tier open to everyone today.
1. Make your first request
Anonymous requests are identified by IP address. No signup or token is required, and the quota is 60 requests per hour per IP on the public data endpoints, counted in a fixed window that resets at the top of each UTC hour.
curl 'https://api.squawkflow.com/api/v1/gex/spx'
2. Stay inside the anonymous quota
60 requests per hour per IP is the only tier open today. Signup is paused, so no new API keys are being issued. Cache each response until meta.next_update instead of polling and a single client fits inside the quota comfortably. Go over it and the next request comes back 429 with a Retry-After header counting down to the top of the hour; rate limits has the full behavior.
Keys issued before signup was paused still authenticate through the X-API-Key header and carry 10,000 requests per day, in a fixed window that resets at UTC midnight. The ?key= query parameter also works, but headers keep credentials out of URLs and logs.
curl 'https://api.squawkflow.com/api/v1/gex/spx' \
-H "X-API-Key: $SQUAWKFLOW_API_KEY"
3. Read the response envelope
Every market-data response has the same top-level fields:
{
"success": true,
"data": {},
"meta": {
"cached_at": "2026-08-14T19:12:25Z",
"next_update": "2026-08-14T19:12:50Z"
},
"usage": {
"requests_used": 42,
"requests_remaining": 18
}
}
Errors use an HTTP status code plus a predictable body:
{
"success": false,
"error": {
"code": "rate_limit_exceeded",
"message": "Request quota exceeded. Retry after 2117 seconds."
}
}
Where to go next
- Browse the endpoint reference.
- Review rate limits and caching practices.
- Import the Postman collection.
- Download the OpenAPI 3 schema.