gankdat Platform API

Health and discovery

GitHub OpenAPI

Operations 10

GET /v1/health Liveness check #
GET /v1/data List available data sources #
DELETE /v1/keys Revoke the presented API key (self-serve) #
GET /v1/usage Current-period credit usage for the presented key (free to call) #
POST /v1/billing/checkout Create a Stripe Checkout session for a paid plan #
POST /v1/billing/paypal/orders Buy a one-off credit pack with PayPal (sandbox): returns the approval URL #
POST /v1/billing/paypal/orders/{id}/capture Capture an approved PayPal order and add its credits (idempotent) #
GET /v1/billing/portal Get a Stripe customer-portal link (manage/cancel subscription) #
POST /v1/waitlist Join the launch waitlist (email only, GDPR-minimal) #
POST /v1/feedback Send product feedback (public; email optional, only for replies) #

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/gankdat-com:gankdat-com-platform-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

gankdat-com-platform-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: gankdat Platform API
  version: 0.28.3
  description: Clean-JSON access to UK planning applications, UK procurement notices, UK contract awards (Contracts Finder), UK sanctions designations, EU procurement notices (TED), US federal exclusions (SAM.gov), UK corporate insolvency notices, UK new company incorporations, UK food hygiene ratings (FSA), UK licensed visa sponsors (Home Office), Charities in England & Wales (Charity Commission), Regulated care locations in England (CQC), Schools and colleges in England (GIAS + Ofsted), NHS organisations in England (ODS register), UK trade mark applications published for opposition (Trade Marks Journal), Licensed gambling operators in Great Britain (Gambling Commission register), UK company lookup (Companies House) — one schema across every dataset, from official open-data feeds. Built for developers and AI agents (native MCP + x402). Licence and personal-data posture are stated per dataset in the terms (OGL v3 sources; Blind Mode where stated).
  contact:
    name: gankdat
    url: https://gankdat.com
  termsOfService: https://gankdat.com/terms
servers:
- url: https://gankdat.com
  description: Production
tags:
- name: Platform
  description: Health and discovery
paths:
  /v1/health:
    get:
      operationId: health
      summary: Liveness check
      tags:
      - Platform
      responses:
        '200':
          description: Service is up
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    const: true
                  data:
                    type: object
                    properties:
                      status:
                        type: string
                      version:
                        type: string
                    required:
                    - status
                    - version
                required:
                - ok
                - data
  /v1/data:
    get:
      operationId: list_sources
      summary: List available data sources
      tags:
      - Platform
      responses:
        '200':
          description: Registered sources
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    const: true
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        slug:
                          type: string
                        title:
                          type: string
                        description:
                          type: string
                        supported_params:
                          type: array
                          items:
                            type: string
                        refresh_cron:
                          type: string
                        credit_cost:
                          type: number
                        change_feed:
                          description: Path of the daily change feed (register datasets), else null
                          type:
                          - string
                          - 'null'
                        notice:
                          description: A dated note while the origin is paused or emptied (last snapshot served), else null
                          type:
                          - string
                          - 'null'
                      required:
                      - slug
                      - title
                      - description
                      - supported_params
                      - refresh_cron
                      - credit_cost
                      - change_feed
                      - notice
                required:
                - ok
                - data
  /v1/keys:
    delete:
      operationId: revoke_key
      summary: Revoke the presented API key (self-serve)
      tags:
      - Platform
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Key revoked
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    const: true
                  data:
                    type: object
                    properties:
                      revoked:
                        type: boolean
                    required:
                    - revoked
                required:
                - ok
                - data
        '401':
          description: Missing, unknown, or revoked API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
  /v1/usage:
    get:
      operationId: get_usage
      summary: Current-period credit usage for the presented key (free to call)
      tags:
      - Platform
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Usage summary
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    const: true
                  data:
                    type: object
                    properties:
                      plan:
                        type: string
                      period:
                        type: string
                      used:
                        type: number
                      granted:
                        type: number
                      remaining:
                        type: number
                      alerts:
                        type: array
                        items:
                          type: string
                    required:
                    - plan
                    - period
                    - used
                    - granted
                    - remaining
                    - alerts
                required:
                - ok
                - data
        '401':
          description: Missing, unknown, or revoked API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
  /v1/billing/checkout:
    post:
      operationId: create_checkout
      summary: Create a Stripe Checkout session for a paid plan
      tags:
      - Platform
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                plan:
                  type: string
              required:
              - plan
      responses:
        '200':
          description: Checkout session created
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    const: true
                  data:
                    type: object
                    properties:
                      url:
                        type:
                        - string
                        - 'null'
                      plan:
                        type: string
                    required:
                    - url
                    - plan
                required:
                - ok
                - data
        '400':
          description: Unknown plan
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '401':
          description: Missing, unknown, or revoked API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '503':
          description: Billing not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
  /v1/billing/paypal/orders:
    post:
      operationId: create_paypal_order
      summary: 'Buy a one-off credit pack with PayPal (sandbox): returns the approval URL'
      description: Credit packs (pack_1k, pack_5k, pack_20k; GET /v1/billing/paypal/packs lists them) add to a top-up balance spent once the monthly plan allowance is gone; they never expire. The order is captured when the buyer returns from PayPal, or by POST /v1/billing/paypal/orders/{id}/capture. PayPal sandbox only — no live money moves.
      tags:
      - Platform
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                pack:
                  type: string
              required:
              - pack
      responses:
        '200':
          description: Order created; the buyer approves at approve_url
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    const: true
                  data:
                    type: object
                    properties:
                      order_id:
                        type: string
                      approve_url:
                        type: string
                      pack:
                        type: string
                      credits:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      amount_usd:
                        type: string
                      next:
                        type: string
                    required:
                    - order_id
                    - approve_url
                    - pack
                    - credits
                    - amount_usd
                    - next
                required:
                - ok
                - data
        '400':
          description: Unknown pack
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '401':
          description: Missing, unknown, or revoked API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '503':
          description: Credit packs not configured, or PayPal unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
  /v1/billing/paypal/orders/{id}/capture:
    post:
      operationId: capture_paypal_order
      summary: Capture an approved PayPal order and add its credits (idempotent)
      tags:
      - Platform
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The order_id from create_paypal_order
      responses:
        '200':
          description: Order captured (status completed) or already captured (already_completed)
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    const: true
                  data:
                    type: object
                    properties:
                      order_id:
                        type: string
                      status:
                        type: string
                        enum:
                        - completed
                        - already_completed
                      credits_added:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      topup:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                    required:
                    - order_id
                    - status
                    - credits_added
                    - topup
                required:
                - ok
                - data
        '401':
          description: Missing, unknown, or revoked API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: No such order on this account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '409':
          description: 'The buyer has not approved the order yet (code: payment_required)'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '503':
          description: Credit packs not configured, or PayPal unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
  /v1/billing/portal:
    get:
      operationId: billing_portal
      summary: Get a Stripe customer-portal link (manage/cancel subscription)
      tags:
      - Platform
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Portal link
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    const: true
                  data:
                    type: object
                    properties:
                      url:
                        type: string
                    required:
                    - url
                required:
                - ok
                - data
        '401':
          description: Missing, unknown, or revoked API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: No billing account for this key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '503':
          description: Billing not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
  /v1/waitlist:
    post:
      operationId: join_waitlist
      summary: Join the launch waitlist (email only, GDPR-minimal)
      tags:
      - Platform
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  format: email
                  pattern: ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                source:
                  type: string
              required:
              - email
      responses:
        '200':
          description: Subscribed (idempotent)
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    const: true
                  data:
                    type: object
                    properties:
                      subscribed:
                        type: boolean
                    required:
                    - subscribed
                required:
                - ok
                - data
        '400':
          description: Invalid request body
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
  /v1/feedback:
    post:
      operationId: send_feedback
      summary: Send product feedback (public; email optional, only for replies)
      tags:
      - Platform
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  minLength: 3
                  maxLength: 2000
                email:
                  type: string
                  format: email
                  pattern: ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                page:
                  type: string
                  maxLength: 200
              required:
              - message
      responses:
        '200':
          description: Feedback stored
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    const: true
                  data:
                    type: object
                    properties:
                      received:
                        type: boolean
                    required:
                    - received
                required:
                - ok
                - data
        '400':
          description: Invalid request body
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
components:
  schemas:
    ErrorEnvelope:
      type: object
      properties:
        ok:
          type: boolean
          const: false
        error:
          type: object
          properties:
            code:
              type: string
              enum:
              - bad_request
              - unauthorized
              - forbidden
              - payment_required
              - quota_exceeded
              - not_found
              - gone
              - rate_limited
              - unavailable
              - internal
            message:
              type: string
            docs_url:
              type: string
            details: {}
          required:
          - code
          - message
          - docs_url
      required:
      - ok
      - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key created from your account dashboard (sign in at /account), sent as a bearer token.
externalDocs:
  description: Quickstart, interactive reference, llms.txt
  url: https://gankdat.com/docs