ChatGPT APIchatgpt.com ↗
Access the public ChatGPT GPT store via API. Browse featured and trending GPTs by category, retrieve chat URLs, descriptions, tools, and prompt starters.
What is the ChatGPT API?
This API exposes data from the public ChatGPT GPT store across 2 endpoints, covering fields like chat URLs, prompt starters, author details, tool lists, and category tags. The discover_gpts endpoint returns a structured list of GPTs organized by store sections such as Featured, Trending, Writing, and Research, while get_gpt delivers granular detail on any individual GPT by ID.
curl -X GET 'https://api.parse.bot/scraper/35859e39-21df-4a62-934d-268ccd939eb5/discover_gpts?category=top_picks' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace chatgpt-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: ChatGPT Public API — bounded, re-runnable; every call capped."""
from parse_apis.chatgpt_com_api import ChatGPT, GptCategory, GptNotFound
client = ChatGPT()
# Discover trending GPT chat links from the public store
for gpt in client.gpts.discover(category=GptCategory.TRENDING, limit=3):
print(gpt.name, gpt.chat_url)
# Get the first writing GPT to drill into details
writing_gpt = client.gpts.discover(category=GptCategory.WRITING, limit=1).first()
# Fetch full details for a specific GPT by ID
if writing_gpt:
try:
detail = client.gpts.get(id=writing_gpt.id)
print(detail.name, detail.description)
print("Tools:", detail.tools)
print("Starters:", detail.prompt_starters[:2])
except GptNotFound as e:
print(f"GPT gone: {e.gpt_id}")
print("exercised: gpts.discover, gpts.get")
Returns GPT chat links from the public ChatGPT store, organized by category sections (Featured, Trending, Writing, Research, etc.). Each result includes the GPT's chat URL, name, description, author, and category. Results come from a single upstream page with all categories; filtering narrows to one section.
| Param | Type | Description |
|---|---|---|
| category | string | Filter results to a specific store category section. Omitting returns GPTs from all categories. |
{
"type": "object",
"fields": {
"gpts": "array of GPT chat link objects with id, name, description, chat_url, author info, and category",
"total": "integer count of returned GPTs"
},
"sample": {
"data": {
"gpts": [
{
"id": "g-kZ0eYXlJe",
"name": "Scholar GPT",
"chat_url": "https://chatgpt.com/g/g-kZ0eYXlJe-scholar-gpt",
"short_url": "g-kZ0eYXlJe-scholar-gpt",
"categories": [
"research"
],
"created_at": "2023-11-15T09:04:21.004009+00:00",
"updated_at": "2026-07-16T21:54:09.088598+00:00",
"author_name": "awesomegpts.ai",
"description": "Enhance research with 200M+ resources and built-in critical reading skills.",
"author_verified": true,
"category_section": "Trending"
}
],
"total": 6
},
"status": "success"
}
}About the ChatGPT API
What the API Covers
The ChatGPT store API provides structured access to publicly listed GPTs on chatgpt.com. The discover_gpts endpoint returns an array of GPT objects, each containing id, name, description, chat_url, author info, and category. An optional category parameter lets you filter results to a single store section (e.g. "Writing" or "Research"); omitting it returns GPTs across all categories in one response.
GPT Detail Retrieval
Once you have a GPT ID from discover_gpts results, pass it to get_gpt to retrieve a richer record. The response includes the chat_url and short_url for direct linking, an array of tools the GPT has access to, categories tags, created_at and updated_at ISO 8601 timestamps, and the description text. This endpoint is useful for building GPT directories, comparison tools, or monitoring changes to a specific GPT's configuration over time.
Data Scope and Structure
All data comes from the publicly accessible GPT store — no authentication or ChatGPT account is required to consume these endpoints. The total field in discover_gpts responses gives you an integer count of returned records. GPT IDs follow the format g-XXXXXXXXXX and are stable identifiers you can store and reuse across subsequent get_gpt calls.
The ChatGPT API is a managed, monitored endpoint for chatgpt.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when chatgpt.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official chatgpt.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a GPT directory site using
name,description,chat_url, andcategoryfields fromdiscover_gpts - Monitor changes to a specific GPT's
tools,description, orupdated_attimestamp over time withget_gpt - Aggregate trending GPTs by category to surface popular tools in a newsletter or dashboard
- Generate a comparison table of GPTs in a given category using author, description, and tool fields
- Track new GPT releases by polling
created_attimestamps returned fromget_gpt - Populate a search index with GPT names, descriptions, and prompt starters for discoverability tooling
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ChatGPT have an official developer API?+
What does `discover_gpts` return and how does the `category` filter work?+
id, name, description, chat_url, author info, and category — plus a total count. All categories are fetched from a single store page, so the optional category parameter filters that result set on the API side rather than making separate upstream requests per category.Does the API expose user ratings, usage counts, or conversation counts for GPTs?+
Are GPTs that require a ChatGPT account to access included in the results?+
Does the API support pagination or returning large result sets incrementally?+
discover_gpts endpoint returns all results from the store page in a single response, filtered optionally by category. There is no page or offset parameter. If you need paginated access to a larger or different slice of the store, you can fork this API on Parse and revise it to add pagination support.