GSTIN API Verification API

Verify a single GSTIN.

Operations 1

GET /api/get-taxpayer-info/{gstin} Verify one GSTIN #

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/gstinapi:gstinapi-verification-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

gstinapi-verification-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GSTIN Verification API
  version: 1.1.0
  summary: Verify Indian GST registration numbers, one at a time or in bulk.
  description: 'Live GSTIN verification against the Indian GST register, sourced through a GST

    Suvidha Provider network rather than by scraping the public portal.'
  termsOfService: https://gstinapi.com/terms
  license:
    name: Commercial — see terms of service
    url: https://gstinapi.com/terms
  contact:
    name: GSTIN API support
    url: https://gstinapi.com/contact
    email: contact@gstinapi.com
  x-documentation: https://gstinapi.com/docs
servers:
- url: https://gstinapi.com
  description: Production
security:
- ApiKeyAuth: []
tags:
- name: Verification
  description: Verify a single GSTIN.
paths:
  /api/get-taxpayer-info/{gstin}:
    get:
      tags:
      - Verification
      operationId: getTaxpayerInfo
      summary: Verify one GSTIN
      description: 'Returns the taxpayer record for a single GSTIN.


        **This endpoint answers `200` for a GSTIN that does not exist.** A number

        with no registration behind it is a real answer rather than an error, and

        is reported inside the body as `taxpayer_data.status_code: 0` with an

        error code in `taxpayer_data.error`. The same is true of a GSTIN that

        fails its checksum, which is rejected without contacting the government

        source at all. Neither costs a credit — check `status_code`, not just the

        HTTP status.


        A `502` means our upstream source was unreachable. Nothing is charged;

        retry.'
      parameters:
      - name: gstin
        in: path
        required: true
        description: The 15-character GSTIN. Case-insensitive; spaces and dashes are stripped before validation.
        schema:
          type: string
          example: 27AAACR5055K1Z7
      responses:
        '200':
          description: The taxpayer record, or a structured "no such registration" answer. Charged only in the former case.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxpayerEnvelope'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '502':
          $ref: '#/components/responses/UpstreamUnavailable'
components:
  schemas:
    TaxpayerEnvelope:
      type: object
      description: The government data source payload, passed through verbatim. Check `taxpayer_data.status_code` — `1` is a live registration, `0` means no registration exists for this number and carries an error code instead.
      properties:
        taxpayer_data:
          type: object
          properties:
            status_code:
              type: integer
              enum:
              - 0
              - 1
            gstin:
              type: string
            name:
              type:
              - string
              - 'null'
              description: Legal name of the registered taxpayer.
            tradename:
              type:
              - string
              - 'null'
            status:
              type:
              - string
              - 'null'
            registrationDate:
              type:
              - string
              - 'null'
            constitution:
              type:
              - string
              - 'null'
            pradr:
              type:
              - object
              - 'null'
              description: Principal place of business, as a structured object.
            adadr:
              type:
              - array
              - 'null'
              items:
                type: object
              description: Additional places of business.
            einvoiceStatus:
              type:
              - string
              - 'null'
            error:
              type:
              - object
              - 'null'
              description: Present when `status_code` is 0.
              properties:
                error_cd:
                  type: string
                message:
                  type: string
        filing_data:
          type: array
          items:
            type: object
          description: Recent GSTR filings with period, ARN and filed status.
        preference_data:
          type: array
          items:
            type: object
        nc_data:
          type: object
          description: E-invoicing and e-way bill activity.
    Error:
      type: object
      properties:
        success:
          type: boolean
          const: false
        reason:
          type: string
          description: A stable code to branch on. The message is for people and may be reworded.
          enum:
          - no_gstins
          - too_many_gstins
          - too_many_active_jobs
          - insufficient_credits
          - already_finished
        message:
          type: string
      required:
      - success
      - message
  responses:
    PaymentRequired:
      description: The account has no credits left. Nothing was verified and nothing was charged.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: false
            message: Insufficient credits
    Unauthorized:
      description: The API key was missing, unknown, or not active.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: false
            message: Invalid or missing API key
    UpstreamUnavailable:
      description: The government data source could not be reached. Nothing was charged; retry.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Per-account key, created and rotated from the dashboard at https://gstinapi.com/settings/api-keys. New accounts receive 20 free credits on email verification.