OpenPrescribing Tariff API

Drug-tariff prices and price-per-unit / ghost-generic savings data.

Operations 4

GET /bubble/ Price-per-unit bubble-chart data #
GET /tariff/ Drug-tariff prices #
GET /price_per_unit/ Price-per-unit savings #
GET /ghost_generics/ Ghost-generic savings #

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/openprescribing-tariff-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

openprescribing-tariff-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: OpenPrescribing Tariff API
  version: '1.0'
  summary: Free, open, key-less REST API over English NHS primary-care prescribing data.
  description: OpenPrescribing.net exposes NHS England primary-care (GP) prescribing data as a free, public, RESTful API.
  license:
    name: MIT
    url: https://github.com/bennettoxford/openprescribing/blob/main/LICENSE.txt
  contact:
    name: Bennett Institute for Applied Data Science
    url: https://openprescribing.net/api/
servers:
- url: https://openprescribing.net/api/1.0
  description: Production
tags:
- name: Tariff
  description: Drug-tariff prices and price-per-unit / ghost-generic savings data.
paths:
  /bubble/:
    get:
      operationId: getBubble
      summary: Price-per-unit bubble-chart data
      description: Price-per-unit data for a single BNF presentation in a shape suitable for a Highcharts bubble chart, optionally highlighting/focusing a single organisation.
      tags:
      - Tariff
      parameters:
      - name: bnf_code
        in: query
        required: true
        schema:
          type: string
        description: BNF presentation code.
      - name: date
        in: query
        required: true
        schema:
          type: string
          format: date
        description: Month (YYYY-MM-DD, first of month) within the available 5-year window.
      - name: highlight
        in: query
        schema:
          type: string
        description: Organisation code to highlight (practice or CCG/Sub-ICB Location).
      - name: focus
        in: query
        schema:
          type: string
        description: When set together with highlight, restricts the chart to the highlighted org.
      responses:
        '200':
          $ref: '#/components/responses/Bubble'
        '400':
          $ref: '#/components/responses/BadRequest'
  /tariff/:
    get:
      operationId: getTariff
      summary: Drug-tariff prices
      description: Drug-tariff prices (including NCSO price-concession data) for one or more BNF codes. Requesting no codes returns the entire (large) tariff and is cached.
      tags:
      - Tariff
      parameters:
      - name: codes
        in: query
        schema:
          type: string
        description: Comma-separated list of BNF codes. Omit to return the whole drug tariff.
      - $ref: '#/components/parameters/format'
      responses:
        '200':
          $ref: '#/components/responses/GenericList'
  /price_per_unit/:
    get:
      operationId: getPricePerUnit
      summary: Price-per-unit savings
      description: Price-per-unit data and potential savings for presentations across practices or Sub-ICB Locations for a given month.
      tags:
      - Tariff
      parameters:
      - name: date
        in: query
        required: true
        schema:
          type: string
          format: date
        description: Month (YYYY-MM-DD, first of month).
      - name: entity_code
        in: query
        schema:
          type: string
        description: Organisation code (practice or CCG/Sub-ICB Location).
      - name: entity_type
        in: query
        schema:
          type: string
          enum:
          - practice
          - ccg
        description: Organisation type; inferred from entity_code length when omitted.
      - name: child_org_type
        in: query
        schema:
          type: string
        description: Child organisation type to break results down to (e.g. practice).
      - name: bnf_code
        in: query
        schema:
          type: string
        description: Restrict to a single BNF code.
      - name: aggregate
        in: query
        schema:
          type: boolean
        description: Aggregate across all of England.
      - $ref: '#/components/parameters/format'
      responses:
        '200':
          $ref: '#/components/responses/GenericList'
        '400':
          $ref: '#/components/responses/BadRequest'
  /ghost_generics/:
    get:
      operationId: getGhostGenerics
      summary: Ghost-generic savings
      description: Potential savings from "ghost-branded generic" prescribing, comparing the price paid against the national median price, for a given month and organisation.
      tags:
      - Tariff
      parameters:
      - name: date
        in: query
        required: true
        schema:
          type: string
          format: date
        description: Month (YYYY-MM-DD, first of month).
      - name: entity_code
        in: query
        schema:
          type: string
        description: Organisation code.
      - name: entity_type
        in: query
        required: true
        schema:
          type: string
          enum:
          - practice
          - ccg
        description: Organisation type.
      - name: group_by
        in: query
        schema:
          type: string
          enum:
          - practice
          - presentation
          - all
          default: practice
        description: Aggregation level for the results.
      - $ref: '#/components/parameters/format'
      responses:
        '200':
          $ref: '#/components/responses/GenericList'
        '400':
          $ref: '#/components/responses/BadRequest'
components:
  responses:
    GenericList:
      description: A list of result objects.
      content:
        application/json:
          schema:
            type: array
            items:
              type: object
        text/csv:
          schema:
            type: string
    Bubble:
      description: Bubble-chart series and categories.
      content:
        application/json:
          schema:
            type: object
            properties:
              plotline:
                type:
                - number
                - 'null'
              series:
                type: array
                items:
                  type: object
              categories:
                type: array
                items:
                  type: object
    BadRequest:
      description: Invalid request (bad/missing parameter, unrecognised org type, invalid code).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    format:
      name: format
      in: query
      schema:
        type: string
        enum:
        - json
        - csv
        default: json
      description: Response format. May also be supplied as a URL suffix (.json / .csv) via DRF format_suffix_patterns.
  schemas:
    Error:
      type: object
      description: Django REST Framework error envelope.
      properties:
        detail:
          type: string