Candid Essentials API

Core nonprofit search and lookup. Provides fast search over Candid's database of U.S. nonprofits by name, EIN, location, NTEE code, size, and more. Returns summary records suitable for autocompletes, lookups, and basic-verification flows. Available in versions v1–v4 with POST and GET variants.

OpenAPI Specification

candid-essentials-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Candid Essentials API
  description: >-
    The Candid Essentials API provides core nonprofit search and lookup
    over Candid's database of U.S. nonprofits. It supports search by name,
    EIN, location, NTEE code, organization size, and other criteria, and
    returns summary records suitable for autocompletes, lookups, and
    basic-verification flows. Multiple versions (v1-v4) are available with
    POST search and GET lookup variants.
  version: 'v4'
  contact:
    name: Candid Developer Support
    url: https://developer.candid.org/
  termsOfService: https://developer.candid.org/
externalDocs:
  description: Candid Developer Documentation
  url: https://developer.candid.org/reference/welcome
servers:
- url: https://api.candid.org/essentials
  description: Candid Essentials API production server
tags:
- name: Search
  description: Operations for searching the Candid nonprofit database.
- name: Lookup
  description: Operations for retrieving lookup values and filter metadata.
security:
- apiKeyAuth: []
paths:
  /v4:
    post:
      operationId: searchEssentialsV4
      summary: Search Essentials v4
      description: >-
        Search Candid's database of U.S. nonprofits using the v4 search
        endpoint, supporting flexible filters and faceted search.
      tags:
      - Search
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          description: Search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v3:
    post:
      operationId: searchEssentialsV3
      summary: Search Essentials v3
      description: Search Candid's database of U.S. nonprofits using the v3 search endpoint.
      tags:
      - Search
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          description: Search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
  /v2:
    post:
      operationId: searchEssentialsV2
      summary: Search Essentials v2
      description: Search Candid's database of U.S. nonprofits using the v2 search endpoint.
      tags:
      - Search
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          description: Search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
  /v1:
    post:
      operationId: searchEssentialsV1
      summary: Search Essentials v1
      description: Search Candid's database of U.S. nonprofits using the v1 search endpoint.
      tags:
      - Search
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          description: Search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
  /lookup:
    get:
      operationId: listLookupFilters
      summary: List Lookup Filters
      description: >-
        Returns the list of available lookup filters (e.g., NTEE codes,
        states, subjects) supported by the Essentials API.
      tags:
      - Lookup
      responses:
        '200':
          description: A list of available lookup filters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LookupListResponse'
  /lookup/{filter_name}:
    get:
      operationId: getLookupByFilter
      summary: Get Lookup Values for Filter
      description: >-
        Returns the available lookup values for a named filter (e.g.,
        states, NTEE codes, subjects).
      tags:
      - Lookup
      parameters:
      - name: filter_name
        in: path
        required: true
        description: Name of the lookup filter to retrieve values for.
        schema:
          type: string
      responses:
        '200':
          description: Lookup values for the requested filter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LookupListResponse'
        '404':
          $ref: '#/components/responses/NotFound'
  /lookup/{filter_name}/{key_or_value}:
    get:
      operationId: getLookupByFilterAndKey
      summary: Get Lookup Detail
      description: >-
        Returns the detail for a single lookup value within a filter, by
        key or value.
      tags:
      - Lookup
      parameters:
      - name: filter_name
        in: path
        required: true
        description: Name of the lookup filter.
        schema:
          type: string
      - name: key_or_value
        in: path
        required: true
        description: Key or value within the lookup filter to retrieve.
        schema:
          type: string
      responses:
        '200':
          description: A single lookup detail record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LookupItem'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Subscription-Key
      description: Candid subscription key required to call the Essentials API.
  responses:
    BadRequest:
      description: The request was malformed or contained invalid parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication credentials are missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    SearchRequest:
      type: object
      description: A generic search request object accepted by Essentials search endpoints.
      additionalProperties: true
    SearchResponse:
      type: object
      description: A generic search response object returned by Essentials endpoints.
      additionalProperties: true
    LookupListResponse:
      type: object
      description: A response wrapping a list of lookup items.
      additionalProperties: true
    LookupItem:
      type: object
      description: A single lookup item record.
      additionalProperties: true
    Error:
      type: object
      description: Generic error response.
      properties:
        code:
          type: string
        message:
          type: string
      additionalProperties: true
x-generated-from: https://developer.candid.org/reference/welcome
x-generated-by: claude-crawl-2026-05-08