Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/captapi-com:captapi-com-pillar-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Captapi Pillar API
version: 0.1.0
summary: Structured public data from social platforms through one REST API.
description: 'Captapi returns public data (profiles, posts, comments, transcripts, search, ads, commerce) from social platforms as JSON.
Auth: send your key as `Authorization: Bearer capt_live_...` or `X-API-Key: capt_live_...`. Keys are created by a human at https://captapi.com/dashboard/api-keys.
Billing: each operation states its cost in `x-credit-cost`. The `X-Captapi-Credits` response header shows what was charged. Failed requests (4xx/5xx) are not billed. `cache=true` serves from the 24h cache, free on a hit where `billedOnCacheHit` is false. Where the price depends on which path served the call, `x-credit-cost.note` gives the full rule and the range we have observed.
Empty results: on many list and search endpoints a call that ran but found nothing is charged 0 credits (for example an ad-library or profile search with no matches). Where an empty result is still billed, the endpoint description says so; Google Maps business search, for instance, bills its one page because the lookup ran. The `X-Captapi-Credits` header always shows the actual charge.
Errors: every non-2xx response uses the same envelope, `{ success: false, error: { code, message, retryable } }`. Retry only when `retryable` is true, honouring `Retry-After`.
Timing: every response carries `Server-Timing: total;dur=`, the total time the request took. Deprecated: the `timings` object some endpoints still return in `data` will be removed from response bodies on 2026-12-17; use the header instead. It is not part of the response schemas below.
Response schemas are inferred from real captured responses and list the fields seen there plus documented top-level fields. Fields can be null when a platform does not expose them.
Endpoint list: https://captapi.com/llms-endpoints.txt · Guide for agents: https://captapi.com/llms.txt · MCP: https://captapi.com/mcp.json'
contact:
name: Captapi support
email: support@captapi.com
url: https://captapi.com
termsOfService: https://captapi.com/legal/terms
license:
name: Captapi Terms of Service
url: https://captapi.com/legal/terms
servers:
- url: https://api.captapi.com
security:
- bearerAuth: []
- apiKeyHeader: []
tags:
- name: Pillar
description: Public data from Pillar.
paths:
/v1/pillar/page:
get:
operationId: pillar_page
tags:
- Pillar
summary: Pillar Page API
description: 'Pillar link-in-bio → identity, socials{}, links[] with per-link clicks, products[].
Paste a Pillar URL (pillar.io/user) and get the public page as clean JSON. Identity: id (string UUID), handle/username, url, displayName (name is a deprecated alias), firstName/lastName, bio (description is a deprecated alias — may be an empty string), avatar, location, email. socials{} maps Pillar banner + connected channels (instagram/tiktok/youtube/twitter/facebook/spotify/soundcloud/linkedin/snapchat/patreon/discord/twitch/medium/amazon/appleAppStore/googleAppStore/…). links[] are custom link rows with id, type, title, url, clicks (public per-link click counts — Pillar''s unique performance signal), and order. products[] carries featured commerce rows (id, title/name, price, url, description, image). Pillar does not expose follower counts or a verified badge on this endpoint. Flat 1 credit via Pillar''s public GraphQL API (not HTML scrape). Pass cache=true or cacheMaxAge (1d/3d/7d/14d/30d) for the shared response cache.
Docs: https://captapi.com/apis/pillar-page'
security:
- bearerAuth: []
- apiKeyHeader: []
parameters:
- name: url
in: query
required: true
description: Pillar page URL or username. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble.
schema:
type: string
example: https://pillar.io/angelstrife
- name: cache
in: query
required: false
description: Set true to serve from the response cache (default TTL). Default false — always fetch fresh. Prefer cacheMaxAge when you need 1d–30d freshness control.
schema:
type: boolean
default: false
example: false
- name: cacheMaxAge
in: query
required: false
description: 'Max age of a cached response: 1d, 3d, 7d, 14d, or 30d. When set, enables caching with that TTL.'
schema:
enum:
- 1d
- 3d
- 7d
- 14d
- 30d
type: string
x-credit-cost:
credits: 1
label: 1 credit
billedOnCacheHit: false
x-one-liner: Pillar link-in-bio → identity, socials{}, links[] with per-link clicks, products[].
responses:
'200':
description: Success. The data object for this endpoint.
headers:
X-Captapi-Credits:
$ref: '#/components/headers/Credits'
X-Captapi-Cache:
$ref: '#/components/headers/Cache'
X-Captapi-Request-Id:
$ref: '#/components/headers/RequestId'
Server-Timing:
$ref: '#/components/headers/ServerTiming'
content:
application/json:
schema:
type: object
required:
- success
- data
properties:
success:
const: true
data:
type: object
properties:
platform:
type: string
description: Platform identifier for this response (matches the endpoint's platform).
id:
type: string
description: Pillar influencer id as a string UUID (catalog-wide id convention).
url:
type: string
description: 'On the page: https://pillar.io/{url_key}. On a link/product row: outbound destination.'
username:
type: string
description: Account username / handle.
handle:
type: string
description: Pillar page url_key (path slug). Canonical alongside username.
displayName:
type: string
description: Creator display name from Pillar (banner user_alias / full name). Canonical; name is a deprecated alias.
name:
type: string
description: Deprecated alias of displayName — prefer displayName.
firstName:
type: string
description: First name.
lastName:
type: string
description: Last name.
avatar:
type: string
description: Avatar / profile picture URL. Canonical across profile endpoints.
location:
type: string
description: Public location string from Pillar page customizations (e.g. México). Null when unset.
email:
type: string
description: Public email from Pillar EMAIL social and/or account email when published.
linkCount:
type: integer
description: Number of ACTIVE custom-link rows in links[] (DELETED + referral chrome excluded).
socials:
type: object
properties:
tiktok:
type: string
description: Tiktok URL.
spotify:
type: string
description: Spotify URL.
twitter:
type: string
description: Twitter URL.
youtube:
type: string
description: Youtube URL.
facebook:
type: string
description: Facebook URL.
linkedin:
type: string
description: Linkedin URL.
instagram:
type: string
description: Instagram URL.
soundcloud:
type: string
description: Soundcloud URL.
bio:
type: string
description: Creator bio. Always present — empty string when Pillar has none. description is a deprecated alias.
description:
type: string
description: Deprecated alias of bio — prefer bio.
links:
type: array
items:
type: object
properties:
id:
type: string
description: Id of this links item.
type:
type: string
description: 'On links[]: host-derived social key when obvious (twitter, spotify, …), otherwise lowercase title.'
title:
type: string
description: Title of this links item.
url:
type: string
description: 'On the page: https://pillar.io/{url_key}. On a link/product row: outbound destination.'
clicks:
type: integer
description: 'On links[]: cumulative public click count for that custom link.'
order:
type:
- integer
- 'null'
description: 'Order. Example: 2.'
description:
type: string
description: Deprecated alias of bio — prefer bio.
products:
type: array
items:
type: object
properties:
id:
type: string
description: Id of this products item.
title:
type: string
description: Title of this products item.
name:
type: string
description: Name of this products item.
url:
type: string
description: 'On the page: https://pillar.io/{url_key}. On a link/product row: outbound destination.'
description:
type: string
description: Description of this products item.
image:
type: string
description: Image URL.
price:
type: integer
description: Price of the item.
showPrice:
type: boolean
description: 'Show price. Example: false.'
example:
success: true
data:
platform: pillar
id: d8a5cbb4-a64d-44f2-830d-27a489bbc608
url: https://pillar.io/angelstrife
username: angelstrife
handle: angelstrife
displayName: Ángel Strife
name: Ángel Strife
firstName: Angel
lastName: Blanco
avatar: https://res.cloudinary.com/pillario/image/upload/user-image/page/96024b21-566f-405a-b4f2-2784526b380b
location: México
email: angelrafaelcovablanco@gmail.com
linkCount: 5
socials:
tiktok: https://tiktok.com/@angelstrifeoficial
spotify: https://open.spotify.com/artist/3Lse4fAlOchY8msotsYMA6?si=4nKqeTSRRsSDoNj1tfvNtA
twitter: https://twitter.com/SoyAngelStrife
youtube: https://www.youtube.com/channel/UCgZSHuBjHSFADbFQOCN1ifg
facebook: https://www.facebook.com/AngelStrifeOficial
linkedin: https://mx.linkedin.com/in/angelcovablanco
instagram: https://www.instagram.com/angelstrifeoficial
soundcloud: https://soundcloud.com/contienda-records
bio: 'Awarded as Ángel Strife for the nomination for best #RealityShow at the KidsChoiceAwards 2020 for his participation in the TheVoice México Season 9 Program with the Acunmedya production company on the television network TvAzteca, Awarded in Film Score for the Epstein Mention of the Fotogenia Festival 2020, as well as the Special Selection of the Hidalgo Film Fest 2020, Guanajuato 3.0 Experimental Film Festival 2020 & the international festival of film sur l''art "Le Fife" 2021 (Canada)'
description: 'Awarded as Ángel Strife for the nomination for best #RealityShow at the KidsChoiceAwards 2020 for his participation in the TheVoice México Season 9 Program with the Acunmedya production company on the television network TvAzteca, Awarded in Film Score for the Epstein Mention of the Fotogenia Festival 2020, as well as the Special Selection of the Hidalgo Film Fest 2020, Guanajuato 3.0 Experimental Film Festival 2020 & the international festival of film sur l''art "Le Fife" 2021 (Canada)'
links:
- id: 669fef70-1ba7-11ee-b33b-e5396daf72e9
type: spotify
title: 30 Mil Pies De Altura Para Morir de Amor
url: https://open.spotify.com/album/14jqUYFbuBs0HcftvQ7jC3?si=bX_bInR7R9Wu-mC9_77Fvw&context=spotify%3Aalbum%3A14jqUYFbuBs0HcftvQ7jC3
clicks: 0
order: 2
- id: 657440b0-1ba7-11ee-b33b-e5396daf72e9
type: instagram
title: SINCRONICIDAD
url: https://www.instagram.com/contiendarecords
clicks: 5
order: null
description: Sigue Nuestra Contienda
products:
- id: 254c8681-1d52-11ee-b065-850167411bb1
title: '"30 Mil Pies De Altura Para Morir de Amor" - LP'
name: '"30 Mil Pies De Altura Para Morir de Amor" - LP'
url: https://angel-strife.ueniweb.com/products/merchandise/30-mil-pies-de-altura-para-morir-de-amor-lp-especial-edition-vynil-deluxe-53106871
description: Especial Edition Vynil Deluxe
image: https://athlane-file-management-prod.s3.amazonaws.com/a925f7b5-77ba-4095-b755-27b2bc221baa
price: 0
showPrice: false
- id: 1ade72a0-5720-11ee-abe2-f1c4530bf5e3
title: Sweater Negro Gōruden Tsukoyomi (Edición Especial)
name: Sweater Negro Gōruden Tsukoyomi (Edición Especial)
url: https://angel-strife.ueniweb.com/products/merchandise/sweater-negro-goruden-tsukoyomi-edicion-especial-52958670
description: Sweater Negro Gōruden Tsukoyomi (Edición Especial) en todas las tallas con diseño Tsukoyomi (Dios de la Luna) & letras Rojas Sweater Negro. disponible en todas las tallas y entrega en territorio nacional e internacional.
image: https://athlane-file-management-prod.s3.amazonaws.com/8b2ac54c-21cd-4339-9cef-49bec35f26b4
price: 0
showPrice: false
'400':
$ref: '#/components/responses/Error400'
'401':
$ref: '#/components/responses/Error401'
'402':
$ref: '#/components/responses/Error402'
'404':
$ref: '#/components/responses/Error404'
'422':
$ref: '#/components/responses/Error422'
'429':
$ref: '#/components/responses/Error429'
'502':
$ref: '#/components/responses/Error502'
components:
responses:
Error429:
description: Rate limit reached. Wait for Retry-After seconds. Not billed.
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
success: false
error:
code: rate_limit_exceeded
message: rate limit exceeded
retryable: true
plan: starter
limit_per_minute: 120
Error422:
description: A required parameter is missing or has the wrong type. Not billed.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
success: false
error:
code: VALIDATION_ERROR
message: Request validation failed. Fix the listed fields and retry.
retryable: false
issues:
- type: missing
loc:
- query
- url
msg: Field required
input: null
Error404:
description: The resource does not exist or is not public. Not billed.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
success: false
error:
code: NOT_FOUND
message: Monitor not found
retryable: false
Error502:
description: The platform could not be reached or returned nothing usable. Retryable, not billed. 503 and 504 use the same envelope.
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
success: false
error:
code: UPSTREAM_UNAVAILABLE
message: The upstream data source failed for this request. Retry shortly.
retryable: true
Error401:
description: Missing, invalid or revoked API key. Not billed.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
success: false
error:
code: UNAUTHORIZED
message: Invalid or revoked API key
retryable: false
Error400:
description: 'Bad request: wrong platform URL, unknown endpoint, or an invalid parameter value. Not billed.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
success: false
error:
code: WRONG_RESOURCE_TYPE
message: Expected a TikTok URL, but received a YouTube URL. Use the YouTube endpoint for that URL, or pass a TikTok URL like https://www.tiktok.com/@user/video/1234567890.
retryable: false
suggestedEndpoint: /v1/youtube/video-details
Error402:
description: Not enough credits for this request. Not billed.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
success: false
error:
code: insufficient_credits
message: This call needs 2 credits; 1 available. No credits charged.
retryable: false
required: 2
available: 1
upgrade_url: /dashboard/billing
headers:
ServerTiming:
description: 'Total time the request took, in milliseconds: `total;dur=<ms>`. No per-step breakdown.'
schema:
type: string
example: total;dur=4387
Cache:
description: 1 when the response was served from the 24h cache, 0 otherwise.
schema:
type: string
enum:
- '0'
- '1'
RequestId:
description: Request id. Include it when contacting support.
schema:
type: string
RetryAfter:
description: Seconds to wait before retrying.
schema:
type: integer
Credits:
description: Credits charged for this request. 0 on a free cache hit or a failed request.
schema:
type: integer
schemas:
Error:
type: object
required:
- success
- error
properties:
success:
const: false
error:
type: object
required:
- code
- message
- retryable
properties:
code:
type: string
description: Machine-readable error code, e.g. WRONG_RESOURCE_TYPE, NOT_FOUND, insufficient_credits, rate_limit_exceeded. Compare case-sensitively; both upper and lower case codes exist.
message:
type: string
description: Human-readable explanation.
retryable:
type: boolean
description: true when the same request may succeed later (429, most 5xx). Do not retry when false.
suggestedEndpoint:
type:
- string
- 'null'
description: On platform mismatch, the endpoint that matches the URL you sent.
additionalProperties: true
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'Your API key: `Authorization: Bearer capt_live_...`. Create one at https://captapi.com/dashboard/api-keys.'
apiKeyHeader:
type: apiKey
in: header
name: X-API-Key
description: 'Alternative to the bearer header: `X-API-Key: capt_live_...`.'
externalDocs:
description: Docs
url: https://captapi.com/docs