Source: https://seerepo.com/r/assafelovic/gpt-researcher/built
Markdown source: https://seerepo.com/r/assafelovic/gpt-researcher/built.md
Description: gpt-researcher is a Python repo built with FastAPI, anyio, starlette, AIOHTTP, uvicorn, and 3 more. It reaches it with SQLAlchemy.

# What is gpt-researcher built with?

gpt-researcher is a Python repo built with FastAPI, anyio, starlette, AIOHTTP, uvicorn, and 3 more. It reaches it with SQLAlchemy, signs people in with cryptography, uses AI through langdetect, LangGraph, langgraph-sdk, langsmith, litellm, and 19 more, makes its content with cssselect2, feedparser, filetype, html5lib, jinja2, and 23 more, validates its data with annotated-types, jsonschema, jsonschema-specifications, marshmallow, pydantic-core, and 2 more, and deploys with loguru and psutil. It has 51,624 written lines, with 149 test files.

Read on November 7, 2026, at commit 3582a68.

Repository: https://github.com/assafelovic/gpt-researcher

## Frontend (/)

### Styles

- **[fonttools](https://seerepo.com/uses/fonttools)**
- **[soupsieve](https://seerepo.com/uses/soupsieve)**
- **tinycss2**

## Backend (/)

### The base

- **[FastAPI](https://seerepo.com/uses/fastapi)**: 7 files

### Data access

- **[SQLAlchemy](https://seerepo.com/uses/sqlalchemy)**

### Sign-in

- **[cryptography](https://seerepo.com/uses/cryptography)**

### AI

- **langdetect**
- **[LangGraph](https://seerepo.com/uses/langgraph)**
- **langgraph-sdk**
- **[langsmith](https://seerepo.com/uses/langsmith)**
- **[litellm](https://seerepo.com/uses/litellm)**
- **[mcp](https://seerepo.com/uses/mcp)**
- **[nltk](https://seerepo.com/uses/nltk)**
- **[Ollama](https://seerepo.com/uses/ollama)**
- **[openai](https://seerepo.com/uses/openai)**
- **tavily-python**
- **[tokenizers](https://seerepo.com/uses/tokenizers)**
- **unstructured-client**
- **[LangChain](https://seerepo.com/uses/langchain)**: 12 files
- **langchain-community**: 8 files
- **[langchain-openai](https://seerepo.com/uses/langchain-openai)**: 6 files
- **langchain-mcp-adapters**: 4 files
- **langchain-text-splitters**: 4 files
- **deepagents**: 3 files
- **langchain-ollama**: 2 files
- **langchain-classic**: 1 file
- **[tiktoken](https://seerepo.com/uses/tiktoken)**: 1 file

## Support (/)

### The base

- **[anyio](https://seerepo.com/uses/anyio)**
- **[starlette](https://seerepo.com/uses/starlette)**
- **[AIOHTTP](https://seerepo.com/uses/aiohttp)**: 2 files
- **[uvicorn](https://seerepo.com/uses/uvicorn)**: 2 files

### Content

- **cssselect2**
- **[feedparser](https://seerepo.com/uses/feedparser)**
- **[filetype](https://seerepo.com/uses/filetype)**
- **html5lib**
- **[jinja2](https://seerepo.com/uses/jinja2)**
- **[lxml](https://seerepo.com/uses/lxml)**
- **markdown2**
- **[markupsafe](https://seerepo.com/uses/markupsafe)**
- **olefile**
- **pydyf**
- **[pymupdf](https://seerepo.com/uses/pymupdf)**
- **[pypdf](https://seerepo.com/uses/pypdf)**
- **python-magic**
- **python-oxmsg**
- **[python-pptx](https://seerepo.com/uses/python-pptx)**
- **tinyhtml5**
- **unstructured**
- **webencodings**
- **[beautifulsoup4](https://seerepo.com/uses/beautifulsoup4)**: 8 files
- **[markdown](https://seerepo.com/uses/markdown)**: 1 file
- **mistune**: 1 file
- **[pillow](https://seerepo.com/uses/pillow)**: 1 file
- **[python-docx](https://seerepo.com/uses/python-docx)**: 1 file
- **weasyprint**: 1 file

### Validation

- **[annotated-types](https://seerepo.com/uses/annotated-types)**
- **[jsonschema](https://seerepo.com/uses/jsonschema)**
- **[jsonschema-specifications](https://seerepo.com/uses/jsonschema-specifications)**
- **marshmallow**
- **[pydantic-core](https://seerepo.com/uses/pydantic-core)**
- **[referencing](https://seerepo.com/uses/referencing)**
- **[Pydantic](https://seerepo.com/uses/pydantic)**: 3 files

### Deploy

- **[loguru](https://seerepo.com/uses/loguru)**
- **[psutil](https://seerepo.com/uses/psutil)**

### Tools

- **langgraph-cli**
- **mypy-extensions**
- **packaging**
- **pycparser**
- **typing-inspect**
- **click**: 1 file
- **typing-extensions**: 1 file

### Other

- **aiohappyeyeballs**
- **aiosignal**
- **attrs**
- **backoff**
- **brotli**
- **certifi**
- **cffi**
- **chardet**
- **charset-normalizer**
- **dataclasses-json**
- **distro**
- **duckduckgo-search**
- **emoji**
- **filelock**
- **frozenlist**
- **fsspec**
- **greenlet**
- **h11**
- **httpcore**
- **httpx-sse**
- **idna**
- **importlib-metadata**
- **jiter**
- **joblib**
- **json5**
- **jsonpatch**
- **jsonpointer**
- **kiwisolver**
- **multidict**
- **nest-asyncio**
- **NumPy**
- **orjson**
- **ormsgpack**
- **pandas**
- **primp**
- **propcache**
- **pydantic-settings**
- **pyphen**
- **python-multipart**
- **pyyaml**
- **rapidfuzz**
- **regex**
- **requests-toolbelt**
- **rpds-py**
- **six**
- **sniffio**
- **sse-starlette**
- **tenacity**
- **tqdm**
- **typing-inspection**
- **urllib3**
- **websockets**
- **win32-setctime**
- **wrapt**
- **yarl**
- **zipp**
- **zopfli**
- **zstandard**
- **requests**: 21 files
- **python-dotenv**: 9 files
- **json-repair**: 7 files
- **colorama**: 3 files
- **aiofiles**: 2 files
- **arxiv**: 2 files
- **ddgs**: 1 file
- **httpx**: 1 file

## Frontend (frontend/nextjs)

### The base

- **[React](https://seerepo.com/uses/react)**: 50 files · [in frontend/nextjs/package.json](https://github.com/assafelovic/gpt-researcher/blob/3582a6841fe7dc801e2a34e34ee408641aea9bce/frontend/nextjs/package.json)
- **[Next.js](https://seerepo.com/uses/nextjs)**: 27 files · [in frontend/nextjs/package.json](https://github.com/assafelovic/gpt-researcher/blob/3582a6841fe7dc801e2a34e34ee408641aea9bce/frontend/nextjs/package.json)
- **@next/third-parties**: 1 file

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**

### Interface

- **[react-hot-toast](https://seerepo.com/uses/react-hot-toast)**: 11 files
- **[Framer](https://seerepo.com/uses/framer)**: 4 files
- **[react-dropzone](https://seerepo.com/uses/react-dropzone)**: 1 file

## Backend (frontend/nextjs)

### AI

- **@langchain/langgraph-sdk**: 1 file

## Support (frontend/nextjs)

### Content

- **isomorphic-dompurify**: 1 file
- **[remark](https://seerepo.com/uses/remark)**: 1 file
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 1 file
- **remark-html**: 1 file

### Other

- **date-fns**: 2 files
- **Axios**: 1 file
- **eventsource-parser**: 1 file
- **next-plausible**: 1 file
- **react-ga4**: 1 file

## Backend (multi_agents)

### AI

- **ag2**
- **[LangGraph](https://seerepo.com/uses/langgraph)**: 2 files
- **[LangChain](https://seerepo.com/uses/langchain)**: 1 file
- **langchain-core**: 1 file

## Support (multi_agents)

### Content

- **weasyprint**
- **mistune**: 1 file
- **[python-docx](https://seerepo.com/uses/python-docx)**: 1 file

### Deploy

- **[loguru](https://seerepo.com/uses/loguru)**: 1 file

### Tools

- **langgraph-cli**

### Other

- **colorama**: 2 files
- **python-dotenv**: 2 files
- **aiofiles**: 1 file
- **json-repair**: 1 file
- **json5**: 1 file

## Other repos with a similar stack

- [run-llama/llama_index](https://seerepo.com/r/run-llama/llama_index/built): anyio, starlette, AIOHTTP, soupsieve, tinycss2, SQLAlchemy, cryptography, litellm, MCP, nltk, Ollama, OpenAI, tavily-python, tokenizers, LangChain, tiktoken, filetype, jinja2, lxml, markupsafe, pymupdf, pypdf, unstructured, beautifulsoup4, mistune, pillow, annotated-types, jsonschema, jsonschema-specifications, marshmallow, pydantic-core, referencing, Pydantic, psutil · [Compare](https://seerepo.com/compare/assafelovic/gpt-researcher/vs/run-llama/llama_index)
- [datawhalechina/hello-agents](https://seerepo.com/r/datawhalechina/hello-agents/built): FastAPI, anyio, starlette, AIOHTTP, uvicorn, React, fonttools, SQLAlchemy, LangGraph, MCP, OpenAI, tavily-python, tokenizers, langchain-openai, tiktoken, feedparser, jinja2, lxml, pymupdf, pypdf, beautifulsoup4, markdown, pillow, python-docx, annotated-types, jsonschema, pydantic-core, Pydantic, loguru, Tailwind CSS · [Compare](https://seerepo.com/compare/assafelovic/gpt-researcher/vs/datawhalechina/hello-agents)
- [ray-project/ray](https://seerepo.com/r/ray-project/ray/built): FastAPI, anyio, starlette, AIOHTTP, uvicorn, React, fonttools, soupsieve, tinycss2, SQLAlchemy, cryptography, nltk, tokenizers, LangChain, tiktoken, jinja2, lxml, markupsafe, webencodings, beautifulsoup4, markdown, mistune, pillow, annotated-types, jsonschema, jsonschema-specifications, pydantic-core, referencing, Pydantic, psutil · [Compare](https://seerepo.com/compare/assafelovic/gpt-researcher/vs/ray-project/ray)
- [bojieli/ai-agent-book](https://seerepo.com/r/bojieli/ai-agent-book/built): FastAPI, anyio, AIOHTTP, uvicorn, React, Next.js, litellm, MCP, nltk, Ollama, OpenAI, langchain-openai, tiktoken, lxml, pymupdf, pypdf, python-magic, python-pptx, beautifulsoup4, markdown, pillow, python-docx, Pydantic, loguru, psutil, Tailwind CSS, remark-gfm · [Compare](https://seerepo.com/compare/assafelovic/gpt-researcher/vs/bojieli/ai-agent-book)
- [apache/superset](https://seerepo.com/r/apache/superset/built): anyio, starlette, AIOHTTP, uvicorn, React, fonttools, soupsieve, tinycss2, SQLAlchemy, cryptography, MCP, tiktoken, jinja2, markupsafe, beautifulsoup4, markdown, pillow, annotated-types, jsonschema, jsonschema-specifications, pydantic-core, referencing, Pydantic, psutil, remark-gfm · [Compare](https://seerepo.com/compare/apache/superset/vs/assafelovic/gpt-researcher)
- [Aider-AI/aider](https://seerepo.com/r/Aider-AI/aider/built): FastAPI, anyio, starlette, AIOHTTP, fonttools, soupsieve, SQLAlchemy, cryptography, litellm, nltk, OpenAI, tokenizers, tiktoken, filetype, jinja2, markupsafe, beautifulsoup4, pillow, annotated-types, jsonschema, jsonschema-specifications, marshmallow, referencing, Pydantic, psutil · [Compare](https://seerepo.com/compare/Aider-AI/aider/vs/assafelovic/gpt-researcher)

## Frequently asked questions

### What language is gpt-researcher written in?

gpt-researcher is written in Python, with 51,624 written lines.

### What framework does gpt-researcher use?

gpt-researcher is built with FastAPI, anyio, starlette, AIOHTTP, uvicorn, React, Next.js, and @next/third-parties.

### What does gpt-researcher sign people in with?

gpt-researcher signs people in with cryptography.

### Does gpt-researcher use AI?

Yes. gpt-researcher uses AI through langdetect, LangGraph, langgraph-sdk, langsmith, litellm, mcp, nltk, Ollama, openai, tavily-python, tokenizers, unstructured-client, LangChain, langchain-community, langchain-openai, langchain-mcp-adapters, langchain-text-splitters, deepagents, langchain-ollama, langchain-classic, tiktoken, @langchain/langgraph-sdk, ag2, and langchain-core.

### Does gpt-researcher have tests?

Yes. gpt-researcher has 149 test files.

### Which repos have a stack like gpt-researcher's?

The ones that share most of its stack: run-llama/llama_index, datawhalechina/hello-agents, and ray-project/ray.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
