captapi-com Pillar API

Public data from Pillar.

Operations 1

GET /v1/pillar/page Pillar Page API #

Work with this as data

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 Specification

captapi-com-pillar-api-openapi.yml Raw ↑
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