eCFR Search Service API

Historical search of the eCFR

Operations 7

GET /api/search/v1/results Search results
GET /api/search/v1/count Search result count
GET /api/search/v1/summary Search summary details
GET /api/search/v1/counts/daily Search result counts by date
GET /api/search/v1/counts/titles Search result counts by title
GET /api/search/v1/counts/hierarchy Search result counts by hierarchy
GET /api/search/v1/suggestions Search suggestions

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 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

ecfr-search-service-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: eCFR API Documentation Admin Service Search Service API
  description: Access eCFR metadata through JSON
servers:
- url: https://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
        schema:
          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
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        schema:
          type: string
          format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          type: string
          format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          type: string
          format: date
      - name: per_page
        description: number of results per page; max of 1,000
        in: query
        schema:
          type: integer
          default: 20
      - name: page
        description: page of results; can't paginate beyond 10,000 total results
        in: query
        schema:
          type: integer
          default: 1
      - name: order
        description: order of results
        in: query
        schema:
          type: string
          enum:
          - citations
          - relevance
          - hierarchy
          - newest_first
          - oldest_first
          - suggestions
          default: relevance
      - 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
        schema:
          type: string
          enum:
          - date
          - results
          default: results
      responses:
        '200':
          description: Success
          content:
            application/json:
              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
        schema:
          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
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        schema:
          type: string
          format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          type: string
          format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          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
        schema:
          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
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        schema:
          type: string
          format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          type: string
          format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          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
        schema:
          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
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        schema:
          type: string
          format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          type: string
          format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          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
        schema:
          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
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        schema:
          type: string
          format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          type: string
          format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          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
        schema:
          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
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        schema:
          type: string
          format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          type: string
          format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          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
        schema:
          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
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: date
        description: limit to content present on this date (YYYY-MM-DD)
        in: query
        schema:
          type: string
          format: date
      - name: last_modified_after
        description: limit to content last modified after this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          type: string
          format: date
      - name: last_modified_before
        description: limit to content last modified before this date (YYYY-MM-DD)
        in: query
        schema:
          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
        schema:
          type: string
          format: date
      responses:
        '200':
          description: Success
        '405':
          description: Invalid input
      tags:
      - Search Service