> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firecrawl.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Developer Index

> Search issues, merged pull requests, repository READMEs, and curated documentation sites

Firecrawl Developer is an index built for coding agents. It covers issues, merged pull requests, and READMEs from public code repositories, alongside curated documentation sites, so an agent can answer a question about code behavior, a library or framework, an API contract, an error message, or a known bug from primary sources rather than from a general web page.

* Find the issue or pull request where a bug was reported and fixed
* Read the passages of a README or a documentation page that answer one specific question
* Trace an API contract back to the pull request that changed it
* Recover the discussion behind an error message

<Note>
  To give your agent access to the Developer Index, we strongly recommend using our [CLI](/sdks/cli) or [MCP](/mcp-server), combined with our [**dedicated developer skill**](https://github.com/firecrawl/skills/blob/main/skills/firecrawl-developer-index/SKILL.md), which you can install with:

  ```bash theme={null}
  npx skills add firecrawl/skills@firecrawl-developer-index
  ```
</Note>

## Endpoints

| Task                                  | Endpoint                                                                          |
| ------------------------------------- | --------------------------------------------------------------------------------- |
| Search the developer index            | [`GET` or `POST /search/developer`](/api-reference/endpoint/developer-search)     |
| Add developer results to a web search | [`POST /search`](/api-reference/endpoint/search) with `categories: ["developer"]` |

## Search the developer index

Send a natural-language question and get back ranked developer results with the passages that matched. This is the path to reach for when you want developer sources only, with the result type, repository, and documentation source filters available.

A developer search costs 2 credits per 10 results, rounded up (1–10 results = 2 credits, 11–20 = 4 credits, and so on). No API key is needed to get started; send one for higher rate limits.

<CodeGroup>
  ```bash cURL theme={null}
  # No API key needed to get started; add -H "Authorization: Bearer $FIRECRAWL_API_KEY" for higher rate limits:
  curl -s "https://api.firecrawl.dev/v2/search/developer?query=how%20do%20I%20configure%20retries&k=10"
  ```

  ```bash CLI theme={null}
  firecrawl developer "how do I configure retries" --limit 10
  ```
</CodeGroup>

`POST` is available on the same path, and is the easier form when you want to pass array filters as JSON:

```bash cURL theme={null}
# No API key needed to get started; add -H "Authorization: Bearer $FIRECRAWL_API_KEY" for higher rate limits:
curl -X POST https://api.firecrawl.dev/v2/search/developer \
  -H "Content-Type: application/json" \
  -d '{
    "query": "how do I configure retries",
    "k": 10,
    "types": ["issue", "pull_request"]
  }'
```

Each result carries a stable `id` such as `issue:owner/repo#123`, a `type` of `doc`, `issue`, `pull_request`, or `readme`, a `url`, and its matched `passages` in markdown, so tables and code blocks survive. `title` is frequently absent on `doc` results, where the source page carries no usable title, so fall back to `url` rather than assuming the field is present.

Alongside the results, `coverage` reports the outcome for each result type and `reranked` reports whether the ranked list went through the reranking stage. Check `coverage` when a result type you expected is missing: `skipped` means your `types` value did not ask for that type, while `degraded` or `unavailable` means the gap came from the index or from a filter, not from the query.

Optional filters narrow the search:

* `k` sets how many results come back, defaulting to 10, and `passages` how many matched passages each one carries
* `types` picks which of `doc`, `issue`, `pull_request`, and `readme` to search
* `repos` scopes the repository half of the index, and `sources` scopes the documentation half
* `skills` set to `only` limits the search to indexed agent-skill files
* `language`, `topic`, `license`, `min_stars`, `max_stars`, `archived`, and `fork` filter on repository attributes, such as `language=Rust`, `topic=async`, or `license=MIT`

Those seven filters describe a code repository, so sending one without a `sources` scope returns no `doc` results and reports `doc` as `unavailable` in `coverage`. Read [how the repository filters scope a search](/api-reference/endpoint/developer-search#how-the-repository-filters-scope-a-search) before you send one.

See the [developer search reference](/api-reference/endpoint/developer-search) for every filter's type and bounds, how `repos` and `sources` scope a search, and the full response schema.

<Note>
  The Python and Node SDKs reach the Developer Index through the `developer` category shown below. They do not expose a dedicated method for this endpoint, so call it over HTTP, through the [CLI](/sdks/cli), or through [MCP](/mcp-server).
</Note>

## Add developer results to a web search

Pass `developer` in the `categories` array on `/search` when you are already calling `/search` and want developer results weighed alongside ordinary web results in a single call. The API returns them in a `developer` group next to `web`, and both SDKs expose that group as `.developer`.

No API key is needed to get started — `/search` accepts keyless requests, and the `developer` category comes with it, subject to the [keyless allowance](/rate-limits#keyless-no-api-key). Send a key for higher rate limits.

<CodeGroup>
  ```bash cURL theme={null}
  # No API key needed to get started; add -H "Authorization: Bearer $FIRECRAWL_API_KEY" for higher rate limits:
  curl -X POST https://api.firecrawl.dev/v2/search \
    -H "Content-Type: application/json" \
    -d '{
      "query": "how do I configure retries",
      "categories": ["developer"],
      "limit": 10
    }'
  ```

  ```bash CLI theme={null}
  firecrawl search "how do I configure retries" --categories developer --limit 10
  ```

  ```python Python theme={null}
  from firecrawl import Firecrawl

  firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")

  result = firecrawl.search(
      "how do I configure retries",
      categories=["developer"],
      limit=10,
  )
  for item in result.developer or []:
      print(item.url, item.title)
  ```

  ```js Node theme={null}
  import { Firecrawl } from "firecrawl";

  const firecrawl = new Firecrawl({
    // No API key needed to get started; add one for higher rate limits:
    // apiKey: "fc-YOUR-API-KEY",
  });

  const result = await firecrawl.search("how do I configure retries", {
    categories: ["developer"],
    limit: 10,
  });
  for (const item of result.developer ?? []) {
    console.log(item.url, item.title);
  }
  ```
</CodeGroup>

Developer results in this group carry `url`, `title`, `description`, and `position`, the same shape as a web result, plus `category: "developer"`. Web results in the same response have no `category`, so it is the field to key on if you merge the two groups. Results arrive in their own group rather than in `web`, so SDK users read them with `result.developer`.

This surface returns the web result shape, not the ranked developer shape. For the matched passages and the index filters, use the [developer search endpoint](#search-the-developer-index).

<Note>
  The hosted [MCP server](/mcp-server) exposes both surfaces, and neither writes anything. See [MCP tools](/mcp-server/tools) for `firecrawl_developer_search`, for developer results through `firecrawl_search`, and for which of the two the keyless tool surface carries.
</Note>
