Playground Sign in Start free
ChatGPT Scraper API

Send a prompt. Get ChatGPT's answer as JSON.

The ChatGPT endpoint types your prompt into the ChatGPT web app and returns the answer it writes, as JSON. Turn on web search and you also get the links ChatGPT cited. You need no ChatGPT account and run no browser.

25
credits per prompt
~30s
typical answer time
0
credits for a failed call
GET /chatgpt
GET /chatgpt
  ?prompt=What are the best project management tools for a small remote team?
  &enable_web_search=true

→ 200 OK · 25 credits · 20 s  (real call, Oct 20, trimmed)
{
  "conversation": {
    "messages": [
      { "id": "", "role": "user", "position": 1,
        "content": "What are the best project management tools for a small remote team?" },
      { "id": "cd587946-8106-4186-92df-644e6858881f",
        "role": "assistant", "position": 2,
        "content": "For a small remote team, the best project management tool is usually the one that keeps tasks, ownership, deadlines, and conversations in one place... **My top recommendation is Asana for structured teamwork, ClickUp for an all-in-one workspace, and Trello for simplicity.** ..." }
    ],
    "total_messages": 2,
    "user_messages": 1,
    "assistant_messages": 1
  },
  "metadata": { "prompt": "What are the best project...", ... },
  "sources": [
    { "url": "https://pickrtech.com/best-project-management-software-for-small-teams/?utm_source=chatgpt.com",
      "title": "pickrtech.com" },
    { "url": "https://asana.com/inside-asana/manage-workflow-project-views",
      "title": "asana.com" },
    ... 36 more (38 links in all)
  ],
  "bytes_transferred": 1069461,
  "recipe": "ChatGPT"
}
What you send

One GET request, 5 parameters.

Call https://api.ujeebu.com/chatgpt with your key in the ApiKey header. Only prompt is required. These are all the parameters there are, as in the docs.

ParameterTypeDefaultWhat it does
prompt required string-The question or prompt to send to ChatGPT. URL-encode special characters.
wait_for_load booleantrueWait for page to fully load before interaction.
timeout number60000Maximum time to wait for response in milliseconds (60 seconds).
enable_web_search booleanfalseEnable ChatGPT's web search capability for up-to-date information.
return_html booleanfalseInclude the full page HTML in the response.
What you get back

The answer, as JSON.

One JSON object once ChatGPT has finished writing. The fields below are the ones our real test call returned.

FieldWhat it holds
conversation.messagesTwo messages: your prompt (role user) and the answer (role assistant), each with id, role, content and position. content is the answer text as ChatGPT wrote it, in Markdown.
conversation.total_messagesuser_messagesassistant_messagesMessage counts (2, 1, 1 for one prompt).
metadataThe prompt you sent and the same counts.
sourcesThe links ChatGPT cited, each with url and title (the domain). Filled when enable_web_search=true: 38 links in our test call.
bytes_transferredBytes the browser session loaded for the call.
recipe"ChatGPT".
htmlThe full page HTML, only with return_html=true.
Live playground

See it work, before you sign up.

Type a prompt and run a real call against the live API, no API key needed. The answer takes about 30 seconds, so keep the tab open.

Limits, stated plainly

What the endpoint does, and what it does not.

It asks ChatGPT the way a visitor would and hands you the answer. It is not a chat API for your own product.

15 to 60 seconds per answer

Each call opens ChatGPT, sends the prompt and waits for the whole answer: about 30 seconds on average. Set your HTTP timeout to 120 seconds.

One prompt, one answer

No threads and no saved context between calls. Put everything ChatGPT needs to know in the prompt.

One JSON response

No streaming. The response arrives once the answer is complete, as plain text (Markdown) in conversation.messages.

The public ChatGPT

Answers come from the ChatGPT web app as a visitor sees it. You cannot pick the model; you get what ChatGPT serves at that moment.

Web search when you ask

enable_web_search=true lets ChatGPT search before answering, and the cited links come back in sources. Off by default.

25 credits, failures free

A completed answer is 25 credits. Timeouts, blocked sessions and server errors cost 0. No ChatGPT account or OpenAI key needed.

Plain HTTP

One GET request in any language.

curl -G "https://api.ujeebu.com/chatgpt" \
  -H "ApiKey: YOUR_API_KEY" \
  --data-urlencode "prompt=What are the best project management tools for a small remote team?" \
  -d enable_web_search=true \
  --max-time 120
import requests

r = requests.get(
    "https://api.ujeebu.com/chatgpt",
    params={
        "prompt": "What are the best project management tools for a small remote team?",
        "enable_web_search": "true",
    },
    headers={"ApiKey": "YOUR_API_KEY"},
    timeout=120,
)
data = r.json()
print(data["conversation"]["messages"][-1]["content"])
for s in data.get("sources", []):
    print(s["url"])
const params = new URLSearchParams({
  prompt: "What are the best project management tools for a small remote team?",
  enable_web_search: "true",
});

const res = await fetch("https://api.ujeebu.com/chatgpt?" + params, {
  headers: { ApiKey: "YOUR_API_KEY" },
  signal: AbortSignal.timeout(120000),
});
const data = await res.json();

console.log(data.conversation.messages.at(-1).content);
(data.sources || []).forEach(s => console.log(s.url));
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"net/url"
	"time"
)

func main() {
	q := url.Values{}
	q.Set("prompt", "What are the best project management tools for a small remote team?")
	q.Set("enable_web_search", "true")

	req, _ := http.NewRequest("GET", "https://api.ujeebu.com/chatgpt?"+q.Encode(), nil)
	req.Header.Set("ApiKey", "YOUR_API_KEY")

	client := &http.Client{Timeout: 120 * time.Second}
	resp, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	var data struct {
		Conversation struct {
			Messages []struct{ Role, Content string }
		}
		Sources []struct{ URL, Title string }
	}
	json.NewDecoder(resp.Body).Decode(&data)
	msgs := data.Conversation.Messages
	if len(msgs) > 0 {
		fmt.Println(msgs[len(msgs)-1].Content)
	}
	for _, s := range data.Sources {
		fmt.Println(s.URL)
	}
}
What people build with it

Tracking what ChatGPT tells people, at scale.

Brand and citation tracking

Ask the questions your buyers ask and record which brands the answer names and which sites it cites. Our AI Citation Index runs on this endpoint every week.

AI visibility tools

Build AI visibility and GEO products on real answers: run each client's prompt set on a schedule and compare the mentions and sources week over week.

Research on AI answers

Study what ChatGPT says and cites for a topic, a market or a list of questions, with the full answer text and links kept as data.

Prompt panels at scale

Send hundreds or thousands of prompts, one per call, in parallel up to your plan's concurrency. Failed calls cost nothing, so retries are cheap.

Content monitoring

Watch how answers about your product or category change over time, and notice when a page you care about stops being cited.

See it in action: the AI Citation Index Every week we run buyer questions through this API and publish which brands ChatGPT recommends and which sites it cites.
Open the index
Pricing

25 credits per ChatGPT Scraper call. Here's what that buys.

One credit pool covers every endpoint. Failed calls cost 0. No per-feature upcharges, no premium-proxy tax. See full pricing →

Start free
Pay-as-you-go top-ups PAYG From $0.24 / 1K down to $0.13 / 1K · no subscription · works on the trial too

Buy a credit pack any time. No subscription required. Works on the trial too - great for one-off batches or sizing before you commit. Top-up credits last 60 days under 500K credits, 90 days from 500K and 180 days from 5M. Each ChatGPT Scraper call is 25 credits; counts below convert at that rate.

Pack Credits ~ ChatGPT Scraper calls Price Per 1K credits  
Mini 50,000 2k $12.00 $0.24 Buy
Starter 100,000 4k $22.00 $0.22 Buy
Standard 500,000 20k $105.00 $0.21 Buy
Pro 1,000,000 40k $155.00 $0.16 Buy
Enterprise 5,000,000 200k $650.00 $0.13 Buy

Sign up free to unlock the top-up flow - the trial's 5,000 credits land instantly, and you can buy any pack right after from the dashboard.

Sign up free
Questions

What people ask before they build.

Can I choose the ChatGPT model?

No. The endpoint sends your prompt to the public ChatGPT web app and returns the answer it gives, with whatever model that app uses for a visitor at the time. There is no model parameter.

Does it stream the answer?

No. You get one JSON response once the full answer is written. Most ChatGPT answers take 15 to 60 seconds, about 30 on average. Set your HTTP client timeout to at least 120 seconds.

Can I continue a conversation?

No. Each call is one prompt and one answer, with no thread or saved context. Put everything the assistant needs to know in the prompt.

Can ChatGPT search the web?

Yes. Add enable_web_search=true and ChatGPT can search before it answers; the links it cited come back in the sources array. It is off by default.

How fresh are the answers?

Live. Every call asks ChatGPT at that moment; nothing is cached, so the same prompt can get a different answer tomorrow.

What does a call cost?

A prompt is 25 credits. Failed calls (timeouts, blocked sessions, server errors) cost 0, and every response carries the credits it used in the Ujb-Credits header.

What about Google AI Mode and Google AI Overviews?

They come from the SERP API on the same key: search_type=ai returns the Google AI Mode answer with its citations (5 credits), and a normal web search returns Google AI Overviews in the ai_overview field when Google shows one.

Ask ChatGPT from your code today.

5,000 free credits (200 prompts), no card. Or try a prompt in the playground first, no key needed.