eCFR Search Service API

Historical search of the eCFR

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/ecfr-search-service-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

ecfr-search-service-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  title: eCFR API Documentation Admin Service Search Service API
  description: Access eCFR metadata through JSON
host: www.ecfr.gov
tags:
- name: Search Service
  description: Historical search of the eCFR
paths:
  /api/search/v1/results:
    get:
      summary: Search results
      parameters:
      - name: query
        description: Search term; searches the headings and the full text
        in: query
        type: string
      - name: agency_slugs[]
        description: limit to content currently associated with these agencies (see AdminService agencies endpoint to retrieve a list of agency slugs)
        in: query
        type: array
        items:
          type: string
        style: form
        explode: true
        collectionFormat: multi
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_after
        description: limit to content last modified on or after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_before
        description: limit to content last modified on or before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: per_page
        description: number of results per page; max of 1,000
        default: 20
        in: query
        type: integer
      - name: page
        description: page of results; can't paginate beyond 10,000 total results
        default: 1
        in: query
        type: integer
      - name: order
        description: order of results
        in: query
        type: string
        default: relevance
        enum:
        - citations
        - relevance
        - hierarchy
        - newest_first
        - oldest_first
        - suggestions
      - name: paginate_by
        description: how results should be paginated - 'date' will group results so that all results from a date appear on the same page of pagination. If 'date' is chosen then one of the last_modified_* options is required.
        in: query
        type: string
        default: results
        enum:
        - date
        - results
      responses:
        '200':
          description: Success
          schema:
            type: object
            properties:
              results:
                type: array
                description: A set of sections and appendices that match the provided query params
              meta:
                type: object
                properties:
                  description:
                    type: string
                    description: description of the search results
                  current_page:
                    type: integer
                    description: current page of results
                  total_count:
                    type: integer
                    description: total count of matching results across all pages
                  total_pages:
                    type: integer
                    description: total number of pages in the search results
                  max_score:
                    type: number
                    format: float
                    description: the maximum score of any match in the search
                  min_date:
                    type: string
                    format: date
                    description: the minimum date of all returned results (returned when paginate_by=date option is provided)
                  max_date:
                    type: string
                    format: date
                    description: the maximum date of all returned results (returned when paginate_by=date option is provided)
        '405':
          description: Invalid input
      tags:
      - Search Service
  /api/search/v1/count:
    get:
      summary: Search result count
      parameters:
      - name: query
        description: Search term; searches the headings and the full text
        in: query
        type: string
      - name: agency_slugs[]
        description: limit to content currently associated with these agencies (see AdminService agencies endpoint to retrieve a list of agency slugs)
        in: query
        type: array
        items:
          type: string
        style: form
        explode: true
        collectionFormat: multi
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_after
        description: limit to content last modified on or after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_before
        description: limit to content last modified on or before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      responses:
        '200':
          description: Success
        '405':
          description: Invalid input
      tags:
      - Search Service
  /api/search/v1/summary:
    get:
      summary: Search summary details
      parameters:
      - name: query
        description: Search term; searches the headings and the full text
        in: query
        type: string
      - name: agency_slugs[]
        description: limit to content currently associated with these agencies (see AdminService agencies endpoint to retrieve a list of agency slugs)
        in: query
        type: array
        items:
          type: string
        style: form
        explode: true
        collectionFormat: multi
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_after
        description: limit to content last modified on or after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_before
        description: limit to content last modified on or before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      responses:
        '200':
          description: Success
        '405':
          description: Invalid input
      tags:
      - Search Service
  /api/search/v1/counts/daily:
    get:
      summary: Search result counts by date
      parameters:
      - name: query
        description: Search term; searches the headings and the full text
        in: query
        type: string
      - name: agency_slugs[]
        description: limit to content currently associated with these agencies (see AdminService agencies endpoint to retrieve a list of agency slugs)
        in: query
        type: array
        items:
          type: string
        style: form
        explode: true
        collectionFormat: multi
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_after
        description: limit to content last modified on or after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_before
        description: limit to content last modified on or before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      responses:
        '200':
          description: Success
        '405':
          description: Invalid input
      tags:
      - Search Service
  /api/search/v1/counts/titles:
    get:
      summary: Search result counts by title
      parameters:
      - name: query
        description: Search term; searches the headings and the full text
        in: query
        type: string
      - name: agency_slugs[]
        description: limit to content currently associated with these agencies (see AdminService agencies endpoint to retrieve a list of agency slugs)
        in: query
        type: array
        items:
          type: string
        style: form
        explode: true
        collectionFormat: multi
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_after
        description: limit to content last modified on or after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_before
        description: limit to content last modified on or before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      responses:
        '200':
          description: Success
        '405':
          description: Invalid input
      tags:
      - Search Service
  /api/search/v1/counts/hierarchy:
    get:
      summary: Search result counts by hierarchy
      parameters:
      - name: query
        description: Search term; searches the headings and the full text
        in: query
        type: string
      - name: agency_slugs[]
        description: limit to content currently associated with these agencies (see AdminService agencies endpoint to retrieve a list of agency slugs)
        in: query
        type: array
        items:
          type: string
        style: form
        explode: true
        collectionFormat: multi
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_after
        description: limit to content last modified on or after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_before
        description: limit to content last modified on or before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      responses:
        '200':
          description: Success
        '405':
          description: Invalid input
      tags:
      - Search Service
  /api/search/v1/suggestions:
    get:
      summary: Search suggestions
      parameters:
      - name: query
        description: Search term; searches the headings and the full text
        in: query
        type: string
      - name: agency_slugs[]
        description: limit to content currently associated with these agencies (see AdminService agencies endpoint to retrieve a list of agency slugs)
        in: query
        type: array
        items:
          type: string
        style: form
        explode: true
        collectionFormat: multi
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_after
        description: limit to content last modified on or after this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      - name: last_modified_on_or_before
        description: limit to content last modified on or before this date (YYYY-MM-DD)
        in: query
        type: string
        format: date
      responses:
        '200':
          description: Success
        '405':
          description: Invalid input
      tags:
      - Search Service