Stack Exchange Users API

Site users, their reputation, badges, tags, top posts, timeline, and write surfaces.

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/stackexchange-users-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 email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

stackexchange-users-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Stack Exchange Access Tokens Users API
  description: 'Public, read-mostly HTTP/JSON API spanning all 180+ Stack Exchange sites

    (Stack Overflow, Server Fault, Super User, Ask Ubuntu, Stats, Math Overflow, ...).


    All method families live under a single base URL with a uniform wrapper

    (`items`, `has_more`, `page`, `quota_max`, `quota_remaining`, `backoff`).

    Read access is unauthenticated. Write methods require OAuth 2.0 with the

    appropriate scopes (`write_access`, `private_info`, `no_expiry`).


    Most paths take a required `site` query parameter naming the target Q&A

    community (`stackoverflow`, `serverfault`, `superuser`, ...). Use `/sites`

    to enumerate the network.

    '
  version: '2.3'
  termsOfService: https://stackoverflow.com/legal/api-terms-of-use
  contact:
    name: Stack Exchange API
    url: https://api.stackexchange.com/
  license:
    name: Creative Commons BY-SA 4.0 (content) / API Terms of Use
    url: https://stackoverflow.com/legal/api-terms-of-use
  x-generated-from: documentation
  x-last-validated: '2026-05-29'
servers:
- url: https://api.stackexchange.com/2.3
  description: Stack Exchange API v2.3 production endpoint
security:
- apiKey: []
tags:
- name: Users
  description: Site users, their reputation, badges, tags, top posts, timeline, and write surfaces.
paths:
  /users:
    get:
      tags:
      - Users
      operationId: listUsers
      summary: Stack Exchange List Users
      description: All users on a site, filterable by display-name substring (inname).
      parameters:
      - $ref: '#/components/parameters/Site'
      - $ref: '#/components/parameters/Key'
      - $ref: '#/components/parameters/Filter'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/Order'
      - name: inname
        in: query
        schema:
          type: string
          example: skeet
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - reputation
          - creation
          - name
          - modified
          default: reputation
      responses:
        '200':
          description: A page of users.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/{ids}:
    get:
      tags:
      - Users
      operationId: getUsersByIds
      summary: Stack Exchange Get Users by Ids
      description: Fetch up to 100 users by semicolon-delimited ids.
      parameters:
      - $ref: '#/components/parameters/Ids'
      - $ref: '#/components/parameters/Site'
      - $ref: '#/components/parameters/Key'
      - $ref: '#/components/parameters/Filter'
      responses:
        '200':
          description: A page of users.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/{ids}/answers:
    get:
      tags:
      - Users
      operationId: listAnswersByUsers
      summary: Stack Exchange List Answers by Users
      description: Answers authored by the given users.
      parameters:
      - $ref: '#/components/parameters/Ids'
      - $ref: '#/components/parameters/Site'
      - $ref: '#/components/parameters/Key'
      - $ref: '#/components/parameters/Filter'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: A page of answers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnswersResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/{ids}/questions:
    get:
      tags:
      - Users
      operationId: listQuestionsByUsers
      summary: Stack Exchange List Questions by Users
      description: Questions authored by the given users.
      parameters:
      - $ref: '#/components/parameters/Ids'
      - $ref: '#/components/parameters/Site'
      - $ref: '#/components/parameters/Key'
      - $ref: '#/components/parameters/Filter'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: A page of questions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuestionsResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/{ids}/comments:
    get:
      tags:
      - Users
      operationId: listCommentsByUsers
      summary: Stack Exchange List Comments by Users
      description: Comments authored by the given users.
      parameters:
      - $ref: '#/components/parameters/Ids'
      - $ref: '#/components/parameters/Site'
      - $ref: '#/components/parameters/Key'
      - $ref: '#/components/parameters/Filter'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: A page of comments.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentsResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/{ids}/badges:
    get:
      tags:
      - Users
      operationId: listBadgesEarnedByUsers
      summary: Stack Exchange List Badges Earned by Users
      description: Badges earned by the given users.
      parameters:
      - $ref: '#/components/parameters/Ids'
      - $ref: '#/components/parameters/Site'
      - $ref: '#/components/parameters/Key'
      - $ref: '#/components/parameters/Filter'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: A page of badges.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadgesResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/{ids}/tags:
    get:
      tags:
      - Users
      operationId: listTagsForUsers
      summary: Stack Exchange List Tags for Users
      description: Tags the given users have activity in.
      parameters:
      - $ref: '#/components/parameters/Ids'
      - $ref: '#/components/parameters/Site'
      - $ref: '#/components/parameters/Key'
      - $ref: '#/components/parameters/Filter'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: A page of tags.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagsResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/{ids}/top-answer-tags:
    get:
      tags:
      - Users
      operationId: listTopAnswerTagsForUsers
      summary: Stack Exchange List Top Answer Tags for Users
      description: Top tags by answer score for the given users.
      parameters:
      - $ref: '#/components/parameters/Ids'
      - $ref: '#/components/parameters/Site'
      - $ref: '#/components/parameters/Key'
      - $ref: '#/components/parameters/Filter'
      responses:
        '200':
          description: A page of tag scores.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagScoresResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/{ids}/top-question-tags:
    get:
      tags:
      - Users
      operationId: listTopQuestionTagsForUsers
      summary: Stack Exchange List Top Question Tags for Users
      description: Top tags by question score for the given users.
      parameters:
      - $ref: '#/components/parameters/Ids'
      - $ref: '#/components/parameters/Site'
      - $ref: '#/components/parameters/Key'
      - $ref: '#/components/parameters/Filter'
      responses:
        '200':
          description: A page of tag scores.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagScoresResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/{ids}/reputation:
    get:
      tags:
      - Users
      operationId: getUsersReputationChanges
      summary: Stack Exchange Get Users Reputation Changes
      description: A subset of reputation changes for the given users.
      parameters:
      - $ref: '#/components/parameters/Ids'
      - $ref: '#/components/parameters/Site'
      - $ref: '#/components/parameters/Key'
      - $ref: '#/components/parameters/Filter'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: A page of reputation changes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReputationResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/{ids}/privileges:
    get:
      tags:
      - Users
      operationId: listUserPrivileges
      summary: Stack Exchange List User Privileges
      description: Privileges available to the given users.
      parameters:
      - $ref: '#/components/parameters/Ids'
      - $ref: '#/components/parameters/Site'
      - $ref: '#/components/parameters/Key'
      - $ref: '#/components/parameters/Filter'
      responses:
        '200':
          description: A page of privileges.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivilegesResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    Question:
      type: object
      description: A question on a Stack Exchange site.
      properties:
        question_id:
          type: integer
          example: 11227809
        title:
          type: string
          example: Why is processing a sorted array faster than processing an unsorted array?
        body:
          type: string
          description: HTML body of the question (only included via filter).
        body_markdown:
          type: string
          description: Markdown body of the question (only included via filter).
        link:
          type: string
          format: uri
          example: https://stackoverflow.com/questions/11227809
        score:
          type: integer
          example: 27000
        view_count:
          type: integer
          example: 1900000
        answer_count:
          type: integer
          example: 25
        comment_count:
          type: integer
          example: 12
        favorite_count:
          type: integer
          example: 4000
        is_answered:
          type: boolean
          example: true
        accepted_answer_id:
          type: integer
          example: 11227902
        creation_date:
          type: integer
          format: int64
          example: 1338717687
        last_activity_date:
          type: integer
          format: int64
          example: 1700000000
        last_edit_date:
          type: integer
          format: int64
          example: 1690000000
        owner:
          $ref: '#/components/schemas/ShallowUser'
        tags:
          type: array
          items:
            type: string
          example:
          - java
          - c++
          - performance
          - cpu-architecture
          - branch-prediction
        content_license:
          type: string
          example: CC BY-SA 4.0
        protected_date:
          type: integer
          format: int64
        locked_date:
          type: integer
          format: int64
        closed_date:
          type: integer
          format: int64
        closed_reason:
          type: string
        bounty_amount:
          type: integer
        bounty_closes_date:
          type: integer
          format: int64
    ReputationChange:
      type: object
      properties:
        user_id:
          type: integer
          format: int64
        post_id:
          type: integer
        post_type:
          type: string
          enum:
          - question
          - answer
        vote_type:
          type: string
          enum:
          - accepts
          - bounties_won
          - up_votes
          - down_votes
          - suggested_edit
          - post_undeleted
          - spam
          - vote_fraud_reversal
          - post_deleted
          - post_migrated
          - association_bonus
        reputation_change:
          type: integer
        on_date:
          type: integer
          format: int64
    Tag:
      type: object
      description: A tag on a Stack Exchange site.
      properties:
        name:
          type: string
          example: openapi
        count:
          type: integer
          example: 3200
        is_required:
          type: boolean
          example: false
        is_moderator_only:
          type: boolean
          example: false
        has_synonyms:
          type: boolean
          example: true
        user_id:
          type: integer
          description: For tag-wikis, the most recent editor.
        last_activity_date:
          type: integer
          format: int64
    QuestionsResponse:
      allOf:
      - $ref: '#/components/schemas/Wrapper'
      - type: object
        properties:
          items:
            type: array
            items:
              $ref: '#/components/schemas/Question'
    AnswersResponse:
      allOf:
      - $ref: '#/components/schemas/Wrapper'
      - type: object
        properties:
          items:
            type: array
            items:
              $ref: '#/components/schemas/Answer'
    BadgeCount:
      type: object
      description: Bronze/silver/gold badge counts for a user.
      properties:
        bronze:
          type: integer
          example: 10000
        silver:
          type: integer
          example: 5000
        gold:
          type: integer
          example: 800
    Wrapper:
      type: object
      description: Common envelope returned by every Stack Exchange API method.
      properties:
        backoff:
          type: integer
          description: Seconds the client MUST wait before re-querying this same method. Returned when the API has identified the consumer as expensive.
          example: 0
        error_id:
          type: integer
          description: Numeric error code when the response is an error.
        error_message:
          type: string
          description: Human-readable error message.
        error_name:
          type: string
          description: Stable error name (e.g. `throttle_violation`).
        has_more:
          type: boolean
          description: True when more pages exist past the returned `page`.
          example: true
        page:
          type: integer
          description: Page number echoed from the request.
          example: 1
        page_size:
          type: integer
          description: Page size echoed from the request.
          example: 30
        quota_max:
          type: integer
          description: Daily quota for the IP/key combination.
          example: 10000
        quota_remaining:
          type: integer
          description: Quota left after this request.
          example: 9999
        total:
          type: integer
          description: Total count when the consumer requested it via filter.
        type:
          type: string
          description: Type name of the items returned.
      required:
      - has_more
      - quota_max
      - quota_remaining
    Badge:
      type: object
      description: A badge definition.
      properties:
        badge_id:
          type: integer
          example: 23
        name:
          type: string
          example: Nice Question
        description:
          type: string
          example: Question score of 10 or more.
        rank:
          type: string
          enum:
          - bronze
          - silver
          - gold
          example: bronze
        badge_type:
          type: string
          enum:
          - named
          - tag_based
          example: named
        award_count:
          type: integer
          example: 500000
        link:
          type: string
          format: uri
          example: https://stackoverflow.com/help/badges/23/nice-question
        user:
          $ref: '#/components/schemas/ShallowUser'
    TagScoresResponse:
      allOf:
      - $ref: '#/components/schemas/Wrapper'
      - type: object
        properties:
          items:
            type: array
            items:
              $ref: '#/components/schemas/TagScore'
    UsersResponse:
      allOf:
      - $ref: '#/components/schemas/Wrapper'
      - type: object
        properties:
          items:
            type: array
            items:
              $ref: '#/components/schemas/User'
    TagsResponse:
      allOf:
      - $ref: '#/components/schemas/Wrapper'
      - type: object
        properties:
          items:
            type: array
            items:
              $ref: '#/components/schemas/Tag'
    PrivilegeItem:
      type: object
      properties:
        short_description:
          type: string
        description:
          type: string
        reputation:
          type: integer
    BadgesResponse:
      allOf:
      - $ref: '#/components/schemas/Wrapper'
      - type: object
        properties:
          items:
            type: array
            items:
              $ref: '#/components/schemas/Badge'
    PrivilegesResponse:
      allOf:
      - $ref: '#/components/schemas/Wrapper'
      - type: object
        properties:
          items:
            type: array
            items:
              $ref: '#/components/schemas/PrivilegeItem'
    TagScore:
      type: object
      description: A user's score in a tag (top askers/answerers).
      properties:
        user:
          $ref: '#/components/schemas/ShallowUser'
        score:
          type: integer
          example: 1200
        post_count:
          type: integer
          example: 45
    Answer:
      type: object
      description: An answer on a Stack Exchange site.
      properties:
        answer_id:
          type: integer
          example: 11227902
        question_id:
          type: integer
          example: 11227809
        title:
          type: string
          example: Why is processing a sorted array faster than processing an unsorted array?
        body:
          type: string
          description: HTML body (filter-dependent).
        body_markdown:
          type: string
          description: Markdown body (filter-dependent).
        link:
          type: string
          format: uri
          example: https://stackoverflow.com/a/11227902
        score:
          type: integer
          example: 36000
        up_vote_count:
          type: integer
          example: 36500
        down_vote_count:
          type: integer
          example: 500
        is_accepted:
          type: boolean
          example: true
        comment_count:
          type: integer
          example: 20
        creation_date:
          type: integer
          format: int64
          example: 1338719105
        last_activity_date:
          type: integer
          format: int64
          example: 1700000000
        last_edit_date:
          type: integer
          format: int64
        owner:
          $ref: '#/components/schemas/ShallowUser'
        last_editor:
          $ref: '#/components/schemas/ShallowUser'
        tags:
          type: array
          items:
            type: string
          example:
          - java
          - c++
          - performance
        content_license:
          type: string
          example: CC BY-SA 4.0
        community_owned_date:
          type: integer
          format: int64
        locked_date:
          type: integer
          format: int64
        awarded_bounty_amount:
          type: integer
        awarded_bounty_users:
          type: array
          items:
            $ref: '#/components/schemas/ShallowUser'
    User:
      type: object
      description: A user account on a single Stack Exchange site.
      properties:
        user_id:
          type: integer
          format: int64
          example: 22656
        account_id:
          type: integer
          format: int64
          example: 11683
        user_type:
          type: string
          enum:
          - unregistered
          - registered
          - moderator
          - team_admin
          - does_not_exist
          example: registered
        display_name:
          type: string
          example: Jon Skeet
        reputation:
          type: integer
          example: 1500000
        reputation_change_day:
          type: integer
          example: 10
        reputation_change_week:
          type: integer
          example: 120
        reputation_change_month:
          type: integer
          example: 540
        reputation_change_quarter:
          type: integer
          example: 1600
        reputation_change_year:
          type: integer
          example: 5400
        creation_date:
          type: integer
          format: int64
          example: 1217631542
        last_modified_date:
          type: integer
          format: int64
          example: 1735000000
        last_access_date:
          type: integer
          format: int64
          example: 1735200000
        is_employee:
          type: boolean
          example: false
        location:
          type: string
          example: Reading, United Kingdom
        website_url:
          type: string
          format: uri
          example: https://codeblog.jonskeet.uk
        link:
          type: string
          format: uri
          example: https://stackoverflow.com/users/22656/jon-skeet
        profile_image:
          type: string
          format: uri
          example: https://i.sstatic.net/lLZAr.jpg?s=128
        accept_rate:
          type: integer
          example: 92
        badge_counts:
          $ref: '#/components/schemas/BadgeCount'
        question_count:
          type: integer
          example: 56
        answer_count:
          type: integer
          example: 36234
        up_vote_count:
          type: integer
          example: 39120
        down_vote_count:
          type: integer
          example: 1024
        view_count:
          type: integer
          example: 99999999
    ShallowUser:
      type: object
      description: Lightweight user reference embedded in posts and comments.
      properties:
        user_id:
          type: integer
          format: int64
          example: 22656
        user_type:
          type: string
          enum:
          - unregistered
          - registered
          - moderator
          - team_admin
          - does_not_exist
          example: registered
        display_name:
          type: string
          example: Jon Skeet
        reputation:
          type: integer
          example: 1500000
        profile_image:
          type: string
          format: uri
          example: https://i.sstatic.net/lLZAr.jpg?s=128
        link:
          type: string
          format: uri
          example: https://stackoverflow.com/users/22656/jon-skeet
        accept_rate:
          type: integer
          example: 92
    CommentsResponse:
      allOf:
      - $ref: '#/components/schemas/Wrapper'
      - type: object
        properties:
          items:
            type: array
            items:
              $ref: '#/components/schemas/Comment'
    ReputationResponse:
      allOf:
      - $ref: '#/components/schemas/Wrapper'
      - type: object
        properties:
          items:
            type: array
            items:
              $ref: '#/components/schemas/ReputationChange'
    Comment:
      type: object
      description: A comment attached to a question or answer.
      properties:
        comment_id:
          type: integer
          example: 14587302
        post_id:
          type: integer
          example: 11227809
        post_type:
          type: string
          enum:
          - question
          - answer
          example: question
        score:
          type: integer
          example: 12
        body:
          type: string
          example: Great explanation, thank you.
        body_markdown:
          type: string
        creation_date:
          type: integer
          format: int64
          example: 1338800000
        edited:
          type: boolean
          example: false
        link:
          type: string
          format: uri
          example: https://stackoverflow.com/questions/11227809#comment14587302_11227809
        owner:
          $ref: '#/components/schemas/ShallowUser'
        reply_to_user:
          $ref: '#/components/schemas/ShallowUser'
        content_license:
          type: string
          example: CC BY-SA 4.0
  parameters:
    Key:
      name: key
      in: query
      required: false
      description: App key from stackapps.com. Raises the daily quota to 10,000/IP.
      schema:
        type: string
        example: example_app_key_abcdef
    Order:
      name: order
      in: query
      required: false
      description: Sort direction.
      schema:
        type: string
        enum:
        - desc
        - asc
        default: desc
    Page:
      name: page
      in: query
      required: false
      description: 1-indexed page number.
      schema:
        type: integer
        minimum: 1
        default: 1
        example: 1
    Ids:
      name: ids
      in: path
      required: true
      description: Up to 100 semicolon-delimited ids of the resource.
      schema:
        type: string
        example: 11227809;417142
    Filter:
      name: filter
      in: query
      required: false
      description: Custom response filter id created via /filters/create.
      schema:
        type: string
        example: default
    Site:
      name: site
      in: query
      required: true
      description: Target Q&A community. Either the api_site_parameter from a `/sites` entry (e.g. `stackoverflow`, `serverfault`, `superuser`) or a full domain (`stackoverflow.com`).
      schema:
        type: string
        default: stackoverflow
        example: stackoverflow
    PageSize:
      name: pagesize
      in: query
      required: false
      description: Items per page (max 100).
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 30
        example: 30
  securitySchemes:
    oauth2:
      type: oauth2
      description: 'OAuth 2.0 explicit or implicit flow. Apps register on stackapps.com.

        Read methods do not require auth; write methods require `write_access`.

        `private_info` is needed for /me/notifications, /me/inbox, and similar

        private surfaces. `no_expiry` issues tokens that never expire.

        '
      flows:
        authorizationCode:
          authorizationUrl: https://stackoverflow.com/oauth
          tokenUrl: https://stackoverflow.com/oauth/access_token
          scopes:
            read_inbox: Access the authenticated user's inbox.
            no_expiry: Issue a token that never expires.
            write_access: Vote, post, comment, flag, accept on the user's behalf.
            private_info: Access endpoints that return personal information.
    apiKey:
      type: apiKey
      in: query
      name: key
      description: 'Optional app key. Sending a key raises the daily quota from 300 to 10,000

        requests per IP and is the recommended default for any non-trivial client.

        '