Search papers, read paper passages, find related work, and search across related GitHub repos
Firecrawl Research is a purpose-built index for scientific and engineering research agents. It exposes a research-specific toolset for searching papers, inspecting paper metadata, reading relevant full-text passages, discovering related papers through structural expansion, and searching over research-related GitHub repos.
Find papers by topic, method, benchmark, author, or category
Inspect canonical paper metadata and source ids
Read the passages in one paper that answer a specific question
Expand from strong seed papers to related papers, citers, or references
Search GitHub history and READMEs for implementation notes, bugs, and design discussions
To give your agent access to the Research Index, we strongly recommend using our CLI or MCP, combined with our dedicated research skill, which you can install with:
Bounty: 5,000 credit reward for solid feedback on /search (GitHub)
To qualify, complete a high-signal interview (thoughtful, concrete use cases, etc) with our Firecrawl Feedback Assistant. Only takes a few minutes, can be stopped at any time, and is both human/agent-friendly (just paste the link into your agentic harness!).
Search paper abstracts with a natural-language query. The response returns ranked papers with canonical paperId, preferred primaryId, source ids, title, abstract, score, and optional ranking signals.
# 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/research/papers?query=diffusion%20image%20synthesis&k=20"
firecrawl research search-papers "diffusion image synthesis" --limit 20
from firecrawl import Firecrawlfirecrawl = Firecrawl( # No API key needed to get started; add one for higher rate limits: # api_key="fc-YOUR-API-KEY",)result = firecrawl.v2.search_papers("diffusion image synthesis", k=20)print(result)
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.research.searchPapers("diffusion image synthesis", { k: 20,});console.log(result);
Optional filters:
authors: author substring filter; all filters must match
Use a canonical paperId or a source-specific primaryId.
# 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/research/papers/arxiv:1706.03762"
firecrawl research inspect-paper arxiv:1706.03762
from firecrawl import Firecrawlfirecrawl = Firecrawl( # No API key needed to get started; add one for higher rate limits: # api_key="fc-YOUR-API-KEY",)paper = firecrawl.v2.inspect_paper("arxiv:1706.03762")print(paper)
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 paper = await firecrawl.research.getPaper("arxiv:1706.03762");console.log(paper);
Add query to the same paper path to retrieve the top full-text passages for a question. This is useful for verifying whether a candidate paper actually contains a method, dataset, constraint, or result before you include it.
# 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/research/papers/arxiv:1706.03762?query=what%20is%20the%20attention%20mechanism&k=4"
firecrawl research read-paper arxiv:1706.03762 --question "What is the attention mechanism?" --limit 4
from firecrawl import Firecrawlfirecrawl = Firecrawl( # No API key needed to get started; add one for higher rate limits: # api_key="fc-YOUR-API-KEY",)passages = firecrawl.v2.read_paper( "arxiv:1706.03762", "What is the attention mechanism?", k=4,)print(passages)
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 passages = await firecrawl.research.getPaper("arxiv:1706.03762", { query: "What is the attention mechanism?", k: 4,});console.log(passages);
Expand from one or more seed papers through semantic expansion and rank the candidates against a natural-language intent.
# 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/research/papers/arxiv:1706.03762/similar?intent=efficient%20transformers&mode=similar&k=20"
firecrawl research related-papers arxiv:1706.03762 --intent "efficient transformers" --limit 20
from firecrawl import Firecrawlfirecrawl = Firecrawl( # No API key needed to get started; add one for higher rate limits: # api_key="fc-YOUR-API-KEY",)papers = firecrawl.v2.related_papers( "arxiv:1706.03762", "efficient transformers", mode="similar", k=20,)print(papers)
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 papers = await firecrawl.research.similarPapers("arxiv:1706.03762", { intent: "efficient transformers", mode: "similar", k: 20,});console.log(papers);
Modes:
similar: co-citation and bibliographic-coupling neighborhood
Search GitHub issues, pull requests, discussions, and repository READMEs for implementation details and engineering prior art.
# 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/research/github?query=flash%20attention%20implementation%20notes&k=10"
firecrawl research search-github "flash attention implementation notes" --limit 10
from firecrawl import Firecrawlfirecrawl = Firecrawl( # No API key needed to get started; add one for higher rate limits: # api_key="fc-YOUR-API-KEY",)results = firecrawl.v2.search_github("flash attention implementation notes", k=10)print(results)
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 results = await firecrawl.research.searchGithub( "flash attention implementation notes", { k: 10 },);console.log(results);
GitHub results include repository, URL, issue/PR metadata when available, snippet, and matched markdown content when available.