Link in bio
Pillar API
Retrieve a public Pillar creator profile, social links, link click counts, and featured products.
Read the public shop data that powers a Pillar page. Get profile details, social accounts, ordered links, and product listings in one response.
API availability: Available
http://localhost:3010Public API: https://api.scrapeatlas.com.Endpoints
Quick start
Create an API key on your account page, then call the public API. Values below are placeholders.
curl "https://api.scrapeatlas.com/v1/pillar?url=https%3A%2F%2Fpillar.io%2Fexample" \
-H "x-api-key: YOUR_API_KEY"Coverage & limits
- One public profile per request; four concurrent requests per worker. Saturation returns 503 busy.
- 15-second total deadline and at most five upstream requests, including one shared retry for network errors or HTTP 5xx. Redirects are rejected; 429 and access challenges are not retried.
- A cold request reads the public shop, page bootstrap, current client bundle, and account metadata. Subsequent requests normally need only shop and account reads. Tokens are sent only to Pillar’s fixed GraphQL endpoint, never to outbound URLs or other workers.
- 2 MiB total decoded bytes across shop JSON, client bootstrap, client source, and account response. Shop JSON is limited to nesting depth 16 and 20,000 nodes. Payload limits fail explicitly.
- At most 500 visited links and products combined, processed in that order, and 100 social channels. Record limits produce partial coverage.
- Private, password-protected, or consent-gated profiles answer an explicit restricted failure; gated records are reported with a warning.
- Missing collections return empty arrays with warnings. Missing metrics return null; they are never substituted with zero. Empty public collections do not add a missing-collection warning.
- Coverage includes public profile fields, custom links, and featured products.
- Fresh public API reads only. The ordinary logged-out frontend credential is discovered from Pillar’s current public client and retained only in memory for up to 15 minutes or its expiry. No account login, cookie jar, destination visits, result caching, billing, or customer key management. No production domain is assumed.
- Retrieval fails explicitly rather than returning a reduced record when the public client changes.
| HTTP | failure.code | Meaning |
|---|---|---|
| 400 | invalid_request | Missing/invalid profile URL, duplicate URL, or unsupported parameters. |
| 401 | unauthorized | Missing or invalid service API key. |
| 403 | restricted_page | The profile requires access or consent. |
| 404 | not_found | The public profile is missing or inactive. |
| 429 | upstream_rate_limited | Pillar rate limited retrieval; no automatic retry. |
| 502 | upstream_challenged | Pillar rejected or challenged the public request. |
| 502 | unsupported_page | Malformed or unsupported JSON, missing identity, or mismatched profile. |
| 502 | response_too_large payload_too_complex | The public JSON exceeds byte, depth, or node limits. |
| 502 | unsafe_redirect request_limit upstream_error | The bounded retrieval could not complete. |
| 503 | busy | All worker slots are in use. |
| 504 | timeout | Retrieval exceeded the total deadline. |
| 502 | public_client_unavailable account_metadata_unavailable | The public client or required account metadata could not be verified. |
| 200 | partial | Usable data with warnings about missing, invalid, gated, or truncated records. |