> ## Documentation Index
> Fetch the complete documentation index at: https://socialquery.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# LinkedIn Article

> Public LinkedIn Pulse article text, author, exact publish time and available like/comment counts. Requires matching canonical URL, public Article metadata and the native article URN. Member-only, blocked, mismatched or incomplete pages return an unbilled error; missing view/share/verification fields remain null.

Returns a public LinkedIn Pulse article as a canonical Post: article ID, body text, author, exact publication timestamp and available like/comment counts. Pass its HTTPS `/pulse/` URL. Tracking parameters and a trailing slash are normalized. Other LinkedIn surfaces and external URLs are rejected before source access.

The adapter verifies the canonical URL, public Article metadata and original article URN. IDs are preserved as strings, avoiding precision loss on LinkedIn's large numeric identifiers. Paragraph/list text comes only from the article body; comments, recommendations, login prompts and session data are excluded. Public images remain source URLs. Embedded media are not downloaded or transcribed.

`engagement.views`, `engagement.shares` and `author.verified` remain null because the public surface does not corroborate them. `published_at` is the exact structured source timestamp, not an estimate from relative text. `ext.title`, `ext.article_urn`, `ext.author_url` and `ext.text_block_count` provide source context. Comments and reactors require their separate operations.

A fresh successful read costs **5 credits**. Errors, cache hits and successful idempotent replays cost zero. Set `X-Max-Credits: 5`. Member-only, blocked, mismatched or incomplete pages return an unbilled error; no article is generated from search snippets or login pages.

Uses anonymous public HTML with a 14-second direct timeout and a 2 MiB limit. Direct requests share a 20-source-read/minute ceiling. The candidate Firecrawl fallback is disabled after two live probes returned HTTP 500; no fallback reliability is claimed. No LinkedIn login, partner API credential or new subscription is required. Public-source availability is not a production SLA.


## OpenAPI

````yaml GET /linkedin/article
openapi: 3.1.0
info:
  title: SocialQuery API
  version: '2026-10-09'
  description: >-
    Documented requests for public-source records. Inspect accepted inputs and
    credit amounts, then verify the selected operation before integrating
    preview coverage.
servers:
  - url: https://socialquery.dev/v1
security:
  - apiKey: []
paths:
  /linkedin/article:
    get:
      tags:
        - LinkedIn
      summary: LinkedIn Article
      description: >-
        Public LinkedIn Pulse article text, author, exact publish time and
        available like/comment counts. Requires matching canonical URL, public
        Article metadata and the native article URN. Member-only, blocked,
        mismatched or incomplete pages return an unbilled error; missing
        view/share/verification fields remain null.
      operationId: get_linkedin_article
      parameters:
        - name: url
          in: query
          required: true
          example: >-
            https://www.linkedin.com/pulse/ai-equity-choice-we-cant-delay-bill-gates-d1gte
          schema:
            type: string
          description: >-
            Public HTTPS LinkedIn /pulse/ URL. Tracking parameters and trailing
            slash are normalized; other LinkedIn surfaces and external URLs are
            rejected.
        - name: Cache-Control
          in: header
          required: false
          example: no-cache
          schema:
            type: string
        - name: Idempotency-Key
          in: header
          required: false
          example: 7a5e1b4c-2d8f-4a3b-9c1e-6e8b4d2a1f3c
          schema:
            type: string
        - name: X-Max-Credits
          in: header
          required: false
          description: >-
            Optional nonnegative integer cap on the maximum request hold. A live
            request whose hold exceeds this cap returns 422
            CREDIT_BUDGET_EXCEEDED before spending. Metered holds use the
            requested limit; cache hits and successful idempotent replays cost
            zero.
          schema:
            type: integer
            minimum: 0
      responses:
        '200':
          description: >-
            Public LinkedIn Pulse article text, author, exact publish time and
            available like/comment counts. Requires matching canonical URL,
            public Article metadata and the native article URN. Member-only,
            blocked, mismatched or incomplete pages return an unbilled error;
            missing view/share/verification fields remain null.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/SocialQueryResponse'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                          url:
                            type: string
                          content:
                            type: object
                            properties:
                              text:
                                type: string
                              media_urls:
                                type: array
                                items:
                                  type: string
                              thumbnail_url:
                                type:
                                  - string
                                  - 'null'
                              duration_seconds:
                                type: 'null'
                            required:
                              - text
                              - media_urls
                              - thumbnail_url
                              - duration_seconds
                          author:
                            type: object
                            properties:
                              username:
                                type: string
                              display_name:
                                type: string
                              avatar_url:
                                type:
                                  - string
                                  - 'null'
                              verified:
                                type: 'null'
                            required:
                              - username
                              - display_name
                              - avatar_url
                              - verified
                          engagement:
                            type: object
                            properties:
                              views:
                                type: 'null'
                              likes:
                                type:
                                  - integer
                                  - 'null'
                                minimum: 0
                              comments:
                                type:
                                  - integer
                                  - 'null'
                                minimum: 0
                              shares:
                                type: 'null'
                            required:
                              - views
                              - likes
                              - comments
                              - shares
                          published_at:
                            type: string
                            format: date-time
                          ext:
                            type: object
                            properties:
                              title:
                                type: string
                              article_urn:
                                type: string
                              author_url:
                                type: string
                              published_at_precision:
                                type: string
                                const: exact
                              text_block_count:
                                type: integer
                                minimum: 1
                              coverage_note:
                                type: string
                            required:
                              - title
                              - article_urn
                              - author_url
                              - published_at_precision
                              - text_block_count
                              - coverage_note
                        required:
                          - id
                          - url
                          - content
                          - author
                          - engagement
                          - published_at
                          - ext
        '400':
          $ref: '#/components/responses/Error400'
        '401':
          $ref: '#/components/responses/Error401'
        '402':
          $ref: '#/components/responses/Error402'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404'
        '405':
          $ref: '#/components/responses/Error405'
        '409':
          $ref: '#/components/responses/Error409'
        '422':
          $ref: '#/components/responses/Error422'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '502':
          $ref: '#/components/responses/Error502'
        '503':
          $ref: '#/components/responses/Error503'
        '504':
          $ref: '#/components/responses/Error504'
components:
  schemas:
    SocialQueryResponse:
      type: object
      required:
        - success
        - platform
        - endpoint
        - credits_used
        - credits_remaining
        - request_id
        - cached
        - data
      properties:
        success:
          type: boolean
          const: true
        platform:
          type: string
        endpoint:
          type: string
        credits_used:
          type: integer
          minimum: 0
        credits_remaining:
          type:
            - integer
            - 'null'
        request_id:
          type: string
        cached:
          type: boolean
        data:
          type: object
          additionalProperties: true
          description: >-
            The selected operation determines the resource fields in this
            object. Source data can omit a metric or report it as null.
    SocialQueryError:
      type: object
      required:
        - success
        - platform
        - endpoint
        - credits_used
        - credits_remaining
        - request_id
        - cached
        - error
      properties:
        success:
          type: boolean
          const: false
        platform:
          type: string
        endpoint:
          type: string
        credits_used:
          type: integer
          minimum: 0
        credits_remaining:
          type:
            - integer
            - 'null'
        request_id:
          type: string
        cached:
          type: boolean
        error:
          type: object
          required:
            - code
            - type
            - message
            - status
            - doc_url
          properties:
            code:
              type: string
            type:
              type: string
            message:
              type: string
            status:
              type: integer
            doc_url:
              type: string
              format: uri
  responses:
    Error400:
      description: Upstream rejected the request.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error401:
      description: Missing, expired, invalid, or revoked API key.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error402:
      description: Insufficient SocialQuery credits.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error403:
      description: Key scope or provider policy denied access.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error404:
      description: Endpoint or upstream resource not found.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error405:
      description: HTTP method is not supported.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error409:
      description: Idempotency conflict or request in progress.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error422:
      description: Invalid parameters.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error429:
      description: Request limit reached.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error500:
      description: Request processing failed.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error502:
      description: Upstream service failed.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error503:
      description: Provider or required service is unavailable.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error504:
      description: Upstream service timed out.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.