University of Oxford OAI PMH API

Open Archives Initiative Protocol for Metadata Harvesting verbs.

Operations 1

GET / Issue an OAI-PMH verb #

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/university-of-oxford-oai-pmh-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

university-of-oxford-oai-pmh-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ORA — Oxford University Research Archive Interface OAI PMH API
  version: '2.0'
  summary: OAI-PMH 2.0 metadata harvesting for Oxford's institutional open-access repository.
  description: 'The one API surface Oxford actually documents. ORA is a registered OAI-PMH data provider;

    the Bodleian Libraries publish harvesting guidance, a set list, an update schedule, a

    deletion policy and a maintenance window at https://ora.ox.ac.uk/api, which is more

    operational transparency than most institutional repositories offer.


    Ten metadata formats are served, including datacite_dc against the DataCite 4.6 kernel,

    oai_openaire against the OpenAIRE 4.0 literature guidelines, three RIOXX profiles (one of

    which, rioxx_terms_cc0, is released under CC0), uketd_dc for EThOS theses, and customised

    profiles for Oxford''s own SOLO discovery layer, BASE and Unpaywall. Records carry ORCID

    identifiers under nameIdentifierScheme="ORCID" and DOIs under identifierType="DOI".


    This OpenAPI is a DERIVED convenience description of a protocol Oxford implements, not a

    contract Oxford publishes. OAI-PMH is defined by the Open Archives Initiative, and the

    authoritative description of this endpoint''s behaviour is the endpoint''s own Identify,

    ListSets and ListMetadataFormats responses, captured verbatim in ../examples/.

    '
  contact:
    name: ORA — Bodleian Libraries, University of Oxford
    email: ora-dev@bodleian.ox.ac.uk
    url: https://ora.ox.ac.uk/api
  termsOfService: https://ora.ox.ac.uk/terms_of_use
  x-operator: institution
  x-operator-evidence: Identify response reports repositoryIdentifier ora.ox.ac.uk, origin baseURL ora4-rhel9-prd-public2.bodleian.ox.ac.uk and adminEmail ora-dev@bodleian.ox.ac.uk — all University of Oxford / Bodleian Libraries infrastructure.
  x-provenance:
    generated: '2026-08-19'
    method: derived
    source: Derived from Oxford's own published guidance at https://ora.ox.ac.uk/api plus live Identify, ListSets and ListMetadataFormats responses captured 2026-08-19 and stored in ../examples/.
  x-standard: https://www.openarchives.org/OAI/openarchivesprotocol.html
servers:
- url: https://ora.ox.ac.uk/oai2
  description: ORA OAI-PMH 2.0 base URL
tags:
- name: OAI-PMH
  description: Open Archives Initiative Protocol for Metadata Harvesting verbs.
paths:
  /:
    get:
      operationId: oaiRequest
      summary: Issue an OAI-PMH verb
      description: 'OAI-PMH dispatches on the `verb` query parameter against a single base URL. Selective harvesting by publication date is NOT supported by this endpoint — Oxford states the datestamps track last modification in the ORA website and are designed for incremental synchronisation, not for date-scoped extraction. Selective harvesting by type of work IS supported via `set`. Deletions are not tracked: `deletedRecord` is `no` and deleted records simply disappear.'
      tags:
      - OAI-PMH
      parameters:
      - name: verb
        in: query
        required: true
        schema:
          type: string
          enum:
          - Identify
          - ListSets
          - ListMetadataFormats
          - ListIdentifiers
          - ListRecords
          - GetRecord
      - name: metadataPrefix
        in: query
        description: Required for ListIdentifiers, ListRecords and GetRecord.
        required: false
        schema:
          type: string
          enum:
          - oai_dc
          - solo_dc
          - uketd_dc
          - datacite_dc
          - base_dc
          - oai_openaire
          - rioxx_terms
          - rioxx_terms_cc0
          - rioxx_terms_v3
          - unpaywall_dc
      - name: set
        in: query
        description: Selective harvesting by type of work, e.g. `type_of_work:thesis`, `type_of_work:dataset`, `type_of_work:journal_article`. Full list via ListSets.
        required: false
        schema:
          type: string
      - name: identifier
        in: query
        description: Required for GetRecord. Form `oai:ora.ox.ac.uk:uuid:<uuid>`. Harvesters that used the pre-2018 endpoint can migrate old identifiers by prefixing `ora:ora.ox.ac.uk:`.
        required: false
        schema:
          type: string
        example: oai:ora.ox.ac.uk:uuid:000d2073-9081-4a5b-b238-021cc7178e49
      - name: from
        in: query
        description: Lower bound on the modification datestamp, for incremental harvesting. Best taken from the last server response. Not a publication-date filter.
        required: false
        schema:
          type: string
          format: date-time
      - name: until
        in: query
        description: Upper bound on the modification datestamp. Oxford advises not setting it.
        required: false
        schema:
          type: string
          format: date-time
      - name: resumptionToken
        in: query
        description: Exclusive with all other parameters except verb.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: An OAI-PMH response envelope. Note that OAI-PMH signals protocol errors inside a 200 body via an <error> element with a code attribute, not via HTTP status.
          content:
            text/xml:
              schema:
                type: string
                contentMediaType: text/xml
              examples:
                identify:
                  externalValue: ../examples/university-of-oxford-ora-oai-identify.xml
                listMetadataFormats:
                  externalValue: ../examples/university-of-oxford-ora-oai-listmetadataformats.xml
        '503':
          description: Scheduled maintenance. Oxford publishes a window of Tuesday 07:00-09:00 UK time during which the OAI-PMH service may be briefly unavailable.