Playground Sign in Start free
← All posts

ChatGPT Plus Subscription: What You Get, What It Costs, and How to Query It via API

A ChatGPT Plus subscription costs $20 per month and gives you meaningfully higher message limits, priority access to new models, enhanced image generation, Sora video, and Deep Research. The free plan is capable, but if you hit the message ceiling mid-session or need features like autonomous agents, Plus is the practical upgrade. For developers who want to query ChatGPT programmatically at scale, this guide covers what Plus actually includes, how it compares to the free plan and Enterprise, and how to do that without a Plus subscription at all.

What ChatGPT Plus costs and what you get

ChatGPT Plus costs $20 per month, billed per user. OpenAI also offers a Go plan, a Business plan, and an Enterprise plan, all priced per user per month. The ChatGPT pricing page is the authoritative source for current rates; prices change, and the page reflects them first.

For developers, the practical and legally cleaner path is to use OpenAI's official API for model access, or a managed endpoint like Ujeebu's /chatgpt that handles the infrastructure. Ujeebu's endpoint operates within its own infrastructure and terms; you authenticate with your Ujeebu API key and receive answer text back. You are not logging into chatgpt.com with a user account or bypassing any authentication system yourself. For a broader treatment of web scraping legality, see our guide on whether web scraping is legal.

Takeaway: Scraping chatgpt.com directly with a bot violates OpenAI's Terms of Service and carries legal risk, particularly because the service sits behind authentication. Using OpenAI's official API or a managed endpoint is the compliant path for programmatic access.

Do you need a ChatGPT Plus subscription for programmatic access?

No. ChatGPT's pricing tiers govern what an individual user can do inside the ChatGPT interface. For querying ChatGPT programmatically, at scale, from your own code, you authenticate to Ujeebu with your Ujeebu API key and call the /chatgpt endpoint. The endpoint accepts a prompt and returns the answer text. See /docs/apis/chatgpt for the full parameter reference.

Does AI recommend your brand?

Free check: how often ChatGPT, Gemini and Google AI Overviews name your brand next to your top competitor, and whether AI crawlers can read your site. Instant for brands in the Index.

Free. No sign-up. Privacy

Why the official OpenAI API is not enough for brand monitoring

The OpenAI chat completions API and the ChatGPT web interface are different products. The API returns a model's text output, generated from its training data. The web interface adds a layer on top: when web search is enabled, ChatGPT retrieves live pages, synthesises them, and names specific brands and sources in its answer. The official OpenAI API does not return the web UI's citations, shopping cards, or search-versus-memory behavior that those users see.

That distinction matters for brand monitoring. If your goal is to know which brands ChatGPT names when a buyer asks a category question, the API gives you a model answer with no citations. The web UI gives you the answer a real user sees, with sources and brand recommendations drawn from live web retrieval. You are not measuring the model; you are measuring what the product recommends to its users.

Building your own scraper against chatgpt.com is a significant engineering project. Cloudflare's bot defenses use TLS fingerprinting, behavioral profiling, JavaScript challenges, and CAPTCHAs. The page streams responses via Server-Sent Events with dynamic CSS class names that change between deploys, breaking selectors regularly. On top of that, ChatGPT login sits behind Cloudflare, making programmatic authentication the hardest part of any DIY approach. A managed endpoint abstracts all of that: you control the prompt, the timeout, and whether web search is enabled, and you get text back.

The API is the engine; the web UI is the full dashboard users see. Scraping the web interface is the only way to see what the driver sees.

Takeaway: If you need the answer a real ChatGPT user sees, including brand recommendations from live web retrieval, you need the web interface, not the API. A managed endpoint is the fastest path to that data, and it is the right tool for most teams doing brand monitoring or building RAG pipelines.

How Ujeebu's ChatGPT endpoint works: request, response, credits

The Ujeebu /chatgpt endpoint accepts a prompt string and returns the ChatGPT answer as text. Four parameters control the call:

  • prompt (required): the question or instruction you want ChatGPT to answer.
  • enable_web_search (boolean, default false): when true, ChatGPT performs live web retrieval before answering. Set this when you want brand recommendations drawn from current web content rather than a pure model answer.
  • wait_for_load (boolean, default true): waits for the full response to load before returning. Leave this at the default for most use cases.
  • timeout (number, default 60000ms): maximum wait time in milliseconds. Complex prompts with web search enabled can take longer; increase this if you see timeouts.
  • return_html (boolean, default false): returns the raw HTML of the response area instead of extracted text, useful if you want to parse the DOM yourself.

Each call costs 25 credits (/pricing). The response is the answer text ChatGPT produced for your prompt. There is no structured JSON envelope with named citation fields; you receive the text and parse it for the signals you care about, such as brand mentions or ranked lists.

Takeaway: Set enable_web_search=true when you need the answer a real user sees, with live web retrieval. Leave it false for pure model answers or faster responses. Check /pricing to confirm your plan's credit quota before running a large batch.

Your first ChatGPT API call: curl and Python

Here is the simplest possible call, asking ChatGPT which help desk software it recommends, with web search enabled:

curl -X GET "https://api.ujeebu.com/chatgpt?prompt=What%20is%20the%20best%20help%20desk%20software%20for%20a%2050-person%20team%3F&enable_web_search=true" \
  -H "ApiKey: YOUR_API_KEY"

The same call in Python:

import requests

API_KEY = "YOUR_API_KEY"
ENDPOINT = "https://api.ujeebu.com/chatgpt"

params = {
    "prompt": "What is the best help desk software for a 50-person team?",
    "enable_web_search": True,
}

response = requests.get(
    ENDPOINT,
    params=params,
    headers={"ApiKey": API_KEY},
)

if response.status_code == 200:
    print(response.text)
else:
    print(f"Request failed: {response.status_code}")

Run the curl example first to confirm your key works and the response looks as expected. Then move to the Python script for batch processing. Note that 408 timeout responses are not billed; 404 responses are billed. If you see 408s on prompts with web search enabled, increase the timeout parameter.

Takeaway: The call is a single GET request with a prompt parameter. No session setup, no cookie management, no browser automation on your side.

Brand monitoring at scale: querying ChatGPT for your category

The real value of a programmatic endpoint is repetition. A single ChatGPT answer is anecdote; a hundred answers across different prompts, run weekly, is a dataset.

Define a prompt list that matches the questions your buyers actually ask: "best help desk software for a small team", "Zendesk alternatives under $50 a seat", "which CRM does ChatGPT recommend for e-commerce". Ten to twenty prompts cover most categories. Run each with enable_web_search=true, scan the answer text for brand names, and record which brands appear and how early in the answer they appear. First mention in a list carries more weight than a footnote.

Ujeebu's own AI index data shows what this looks like at scale. In the help desk category, the gap between the most-mentioned brand and the tenth is substantial:

Zendesk is named in 56% of AI answers to help desk software questions, more than any other brand in ChatGPT, Gemini and Google AI Overviews alike.
<title>Zendesk is named in 56% of AI answers to help desk software questions, more than any other brand in ChatGPT, Gemini and Google AI Overviews alike.</title>Zendesk 0.56, Freshdesk 0.41, Intercom 0.36, Help Scout 0.27, Gorgias 0.18, Zoho Desk 0.15, HubSpot Service Hub 0.13, Jira Service Management 0.11, Front 0.1, Tidio 0.1Zendesk<title>Zendesk: 0.56</title>0.56Freshdesk<title>Freshdesk: 0.41</title>0.41Intercom<title>Intercom: 0.36</title>0.36Help Scout<title>Help Scout: 0.27</title>0.27Gorgias<title>Gorgias: 0.18</title>0.18Zoho Desk<title>Zoho Desk: 0.15</title>0.15HubSpot Service Hub<title>HubSpot Service Hub: 0.13</title>0.13Jira Service Management<title>Jira Service Management: 0.11</title>0.11Front<title>Front: 0.1</title>0.1Tidio<title>Tidio: 0.1</title>0.1

Source: Ujeebu data: Which help desk software brands ChatGPT, Gemini and Google AI Overviews recommend

Data
Which help desk software brands ChatGPT, Gemini and Google AI Overviews recommend
Zendesk0.56
Freshdesk0.41
Intercom0.36
Help Scout0.27
Gorgias0.18
Zoho Desk0.15
HubSpot Service Hub0.13
Jira Service Management0.11
Front0.1
Tidio0.1

Zendesk appears in the majority of AI answers; brands further down the list appear far less often. A weekly cron job running the same prompt list gives you a trend line. A sudden drop in mentions after a competitor's press release, or a rise after you publish a well-cited comparison page, is the signal you are looking for. For the broader context of why AI mention frequency matters for your business, see what AI visibility means and how to measure it. Ujeebu publishes category-level citation data at /ai-index if you want a benchmark before you start.

Takeaway: Start with ten prompts that match real buyer questions in your category. Run them weekly. The trend matters more than any single data point.

Step-by-step Python script: querying ChatGPT answers in bulk

The script below checks your account balance first, then runs a list of prompts, detects brand mentions in each answer, and writes results to a CSV. It uses only the requests and csv standard libraries.

import requests
import csv
import time
from datetime import datetime

API_KEY = "YOUR_API_KEY"
CHATGPT_ENDPOINT = "https://api.ujeebu.com/chatgpt"
ACCOUNT_ENDPOINT = "https://api.ujeebu.com/account"

PROMPTS = [
    "What is the best help desk software for a 50-person team?",
    "What are the best alternatives to Zendesk?",
    "Which CRM does ChatGPT recommend for a small e-commerce business?",
]

BRANDS = ["Zendesk", "Freshdesk", "Intercom", "Help Scout", "Gorgias"]

def check_balance():
    r = requests.get(ACCOUNT_ENDPOINT, headers={"ApiKey": API_KEY})
    r.raise_for_status()
    data = r.json()
    print(f"Plan: {data['plan']} | Credits used: {data['used']} / {data['quota']}")
    return data["balance"]

def query_chatgpt(prompt):
    r = requests.get(
        CHATGPT_ENDPOINT,
        params={"prompt": prompt, "enable_web_search": True},
        headers={"ApiKey": API_KEY},
    )
    if r.status_code == 408:
        print("  Timeout (not billed). Consider increasing timeout parameter.")
        return ""
    if r.status_code != 200:
        print(f"  Request failed: {r.status_code}")
        return ""
    return r.text

def detect_brands(text, brands):
    return [b for b in brands if b.lower() in text.lower()]

def main():
    balance = check_balance()
    print(f"Starting balance: {balance} credits")

    rows = []
    for prompt in PROMPTS:
        print(f"Querying: {prompt[:60]}...")
        answer = query_chatgpt(prompt)
        mentions = detect_brands(answer, BRANDS)
        rows.append({
            "timestamp": datetime.utcnow().isoformat(),
            "prompt": prompt,
            "answer": answer,
            "mentions": ", ".join(mentions),
        })
        print(f"  Brands found: {mentions}")
        time.sleep(2)

    with open("chatgpt_brand_monitor.csv", "w", newline="", encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=["timestamp", "prompt", "answer", "mentions"])
        writer.writeheader()
        writer.writerows(rows)

    print("Results written to chatgpt_brand_monitor.csv")

if __name__ == "__main__":
    main()

Check your account balance at the start of any large batch with GET /account (documented at /docs/apis/account). The balance field tells you how many credits remain. The quota and used fields show your plan ceiling and consumption so far this billing period. Run the script against three prompts first to verify the output format and credit consumption before scaling to a full prompt list.

Store the raw answer text alongside the prompt and a timestamp from the first run. You can always re-parse the text for new brands; you cannot re-run history.

Using captured answers in a RAG pipeline

ChatGPT answers with web search enabled are already synthesised from current web content. That makes them useful as a secondary freshness signal in a retrieval-augmented generation pipeline, alongside raw web pages, so your system stays current on fast-moving topics where your own indexed corpus lags.

The workflow: call /chatgpt with a domain question, store the answer text, chunk it, embed it, and index it alongside your primary documents. A second use is ground-truth comparison. If your RAG system answers a question differently from ChatGPT's web-search answer, that divergence is worth investigating: either your corpus is stale, or ChatGPT is drawing on sources you have not indexed.

The /chatgpt endpoint and the Markdown API are complementary, not interchangeable. Use /markdown to convert raw web pages into clean text for indexing. Use /chatgpt when you want the AI's synthesised answer, not the raw source. For more on building LLM pipelines with scraped data, see /for-llm and /use-cases/extract-structured-data-llm.

Takeaway: ChatGPT answers are a useful freshness signal for RAG pipelines, but they are a synthesis layer, not a primary source. Index both.

How many ChatGPT answer requests fit each Ujeebu plan

Each /chatgpt call costs 25 credits (/pricing). Requests per month for any plan equals plan credits divided by 25. Here is what that looks like across plans:

Plan Monthly credits Price
Starter 300,000 $49
Growth 1,000,000 $119
Pro 3,000,000 $299
Business 15,000,000 $999

Dividing each plan's credits by 25 gives you the maximum ChatGPT requests per month if you used the entire quota for nothing else. In practice, most teams mix endpoint types, so your effective ChatGPT capacity depends on how you split credits across calls.

The free trial is 7 days with 5,000 credits, no credit card required, enough for 200 ChatGPT answer requests to test the full workflow. Annual billing saves 10% across all plans. Credits do not roll over at renewal; top-ups last 30 days.

A practical example: a brand monitoring job running 20 prompts weekly costs 500 credits per week, or roughly 2,000 credits per month. That fits comfortably within the Starter plan alongside other API usage. If you run the same prompts daily, the ChatGPT calls alone consume credits quickly, so calculate your weekly burn against the plan quota before committing, especially if you also use the SERP or Markdown APIs.

Takeaway: For a weekly brand monitoring job of 20 prompts, the Starter plan has headroom. For daily runs or large prompt sets, calculate your weekly credit burn against the plan quota before committing.

Comparing ChatGPT and Gemini answers for the same prompt

One workflow that is easy to overlook: running the same prompt against both ChatGPT and Gemini and comparing the brand recommendations side by side. Ujeebu has a /gemini endpoint with the same prompt-based structure as /chatgpt.

curl -X GET "https://api.ujeebu.com/gemini?prompt=What%20is%20the%20best%20help%20desk%20software%20for%20a%2050-person%20team%3F" \
  -H "Authorization: Bearer YOUR_API_KEY"

Run the same prompt against both endpoints, compare the brand mentions, and you have a cross-engine view of AI visibility for your category. If ChatGPT names Zendesk and Gemini favors Freshdesk, that divergence is worth flagging for follow-up. Ujeebu's published data shows that engine rankings diverge meaningfully: in the help desk category, some brands rank significantly higher on ChatGPT than on Gemini, and vice versa. Tracking both gives you a fuller picture of where your brand stands across the AI answers your buyers actually see.

Takeaway: If AI visibility is a priority, run your prompt list against both /chatgpt and /gemini. The differences between engines are often as informative as the answers themselves.


Start with the 7-day free trial: 5,000 credits, no credit card required, enough to run 200 brand monitoring queries and see exactly what the responses contain before choosing a plan.


FAQ

Is ChatGPT Plus worth it?

For anyone who uses ChatGPT regularly for work, writing, coding, or research, yes. The Plus plan's roughly 16x higher message throughput compared to the free plan, combined with immediate model access, image generation, Sora, and Deep Research, makes it a meaningfully different product. For casual users who open ChatGPT a few times a week for quick questions, the free plan covers most needs.

Do I need a ChatGPT Plus subscription to use Ujeebu's /chatgpt endpoint?

No. You authenticate to Ujeebu with your Ujeebu API key. A ChatGPT Plus subscription governs what an individual user can do inside the ChatGPT interface; it is not required here. For details on what Plus includes for individual users, see the ChatGPT pricing page.

Is it legal to scrape ChatGPT?

Scraping chatgpt.com directly with a bot violates OpenAI's Terms of Service, which prohibit automated access without express permission. Beyond terms, scraping behind a login wall carries additional legal risk compared to scraping open public pages. The compliant path for programmatic access is OpenAI's official API or a managed endpoint like Ujeebu's /chatgpt. See our web scraping legality guide for the broader legal framework.

What is the difference between enable_web_search=true and the default?

With enable_web_search=false (the default), ChatGPT answers from its training data without retrieving live web pages. With enable_web_search=true, it performs live web retrieval before answering, which produces references to current sources and brand recommendations. For brand monitoring, use true. For pure model answers or faster responses, use false.

Can I use this endpoint to compare ChatGPT and Gemini answers for the same prompt?

Yes. Ujeebu has a separate /gemini endpoint with the same prompt-based structure. Send the same prompt to both, compare the answer texts, and you have a cross-engine view of AI recommendations for your category.

How do I check my remaining credits before running a large batch?

Call GET https://api.ujeebu.com/account with your API key. The response includes balance, quota, used, and used_percent. Run this check at the start of any batch script to confirm you have enough credits before committing to a long run.

What happens if a /chatgpt request times out?

Requests that return a 408 response are not billed. 404 responses are billed. If you see timeouts on complex prompts with web search enabled, increase the timeout parameter beyond the default 60,000ms and retry.

Try it yourself

Run this on your own pages

Get a free API key and make your first call in minutes. 5,000 free credits for 7 days, no card.

← Back to blog Read the docs →