Niche research
TGGET

API and MCP documentation

Everything the website can do is available to scripts and AI assistants: start a research from a phrase or a description, read findings, add checks. Responses are JSON; identifiers are UUIDs.

Authentication

Create a personal access token in Settings → API and AI assistants (verified email required). Send it as a Bearer token. Tokens expire after a year and are revoked when you change your password or close sessions.

Authorization: Bearer <token>
Accept: application/json

MCP

The MCP server (Streamable HTTP) exposes tools start_research, get_research, get_report, list_research, run_signal and compare_research for researches, list_projects, get_project, follow_niche and update_project for followed niches, resources tgget://quota and tgget://sources, and the prompt find_niche. Connect Claude Desktop, Claude Code, Cursor or any MCP client with the same Bearer token:

https://tgget.io/mcp

Research runs in the background: after start_research poll get_research every 20-30 seconds until status is completed and pending is 0. The server tells anyone what it is and which tools it has, so catalogs and clients can show it before an account is connected. Every call of a tool, every resource and the prompt need a token.

{
  "mcpServers": {
    "tgget": {
      "type": "http",
      "url": "https://tgget.io/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}

REST API

Same account limits as the website: FREE plan researches (a welcome allowance, then a monthly one on a rolling 30-day window), 60 requests per minute.

POST /api/v1/research/intake
Start a research from free text: a short phrase is scanned (demand, sub-topics, competitors, signals), a description is turned into real queries first. The conclusions and the report are written in English; texts meant for the site and the stores are written in the language of the phrase. 202 when created, 200 when replayed with the same request_key. {"text": "expense tracker", "deep": false, "request_key": "<uuid, optional>"}
GET /api/v1/research
Your researches, newest first, paginated. Optional filters: q (phrase contains), type (scan, brief, manual — a top-level research that is neither, plus every child kind: demand, competitors, dynamics, appstore, reviews, fingerprint, insight, wiki, radar, youtube, paid, report), status (the row itself: queued, running, completed, failed), state (the whole case, children included: pending, done, failed), market (international, russian), verdict (go, maybe, no, or any for a finished report — of the row, of a scan's report or of a description's scan), days (1, 7, 30, 90), scope (roots by default, all to include child checks), sort (newest, oldest, demand).
GET /api/v1/research/{id}
One research with raw result and analysis.
GET /api/v1/research/{id}/summary
Compact findings: headline numbers, ranked candidates, competitor overview, children with ids, skipped stages. For a report research the findings are the full report: verdict (computed by rules from five measured factors, listed in verdict.factors with their scores; verdict.entry is the checked phrase with weak search results to enter by), product with customer pains and MVP, napkin economics, SEO, ASO, names, landing, distribution channels, validation and risks.
GET /api/v1/research/cases
The history as the website shows it: one card per research a person started, with the stages of the pipeline, headline numbers, the verdict and the children grouped by stage. The same filters as the list.
GET /api/v1/research/{id}/report
The final report of a scan, or of the report research itself: structured sections, the same text as Markdown and a read-only link to share. 404 until the report is ready.
POST /api/v1/research/{id}/visibility
Lists a finished scan in the open catalog or takes it out. Hiding needs a plan that keeps researches private. {"public": true}
GET /api/v1/research/{id}/children
Child researches (sub-topics, competitor checks, signals) of a research.
DELETE /api/v1/research/{id}
Removes a research with everything under it from the history; refused while it is still running. Spent researches are not refunded.
DELETE /api/v1/research
Removes every finished research of the account; running ones are kept.
POST /api/v1/research
Low-level start with explicit kind and parameters (kind, phrase, mode, depth_limit, competitors_limit, parent_id for child kinds, request_key). The intake endpoint is simpler.
GET /api/v1/research/compare
Two to five finished niche scans side by side (ids[] of the scans or of their reports): items with numbers, the reports' positioning and napkin economics and wins, rows with the value of every niche and best, the indexes of the better ones. Demand and cost per click are not ranked across different markets. The marks come from the numbers, not from the language model. share_url is a signed read-only link to the comparison that works without signing in. ?ids[]=<uuid>&ids[]=<uuid>
GET /api/v1/projects
Followed niches, newest first: status, whether the plan serves the project, the next check, the latest numbers and what changed at the latest monthly check (structured changes and digest lines). meta holds the plan, how many niches it follows and how many are active.
GET /api/v1/projects/{id}
One followed niche with the history of its checks, newest first (up to 24): numbers, changes and the research each check came from.
POST /api/v1/projects
Follow the niche of a finished scan that has a report; the scan becomes the first measurement. 201 when created, 200 when the niche is already followed, 422 when the plan is full or the research has no report. Monthly checks do not spend researches and cannot be started on request. {"research": "<uuid>"}
PATCH /api/v1/projects/{id}
Pause a project (paused) or follow it again (active, needs a free place in the plan). {"status": "paused"}
DELETE /api/v1/projects/{id}
Stop following: removes the project with its checks and digests; the researches stay in the history.
GET /api/v1/niches
The open catalog, no token needed: pages with the phrase, verdict, score and demand. Optional q, sort (fresh, demand, score) and /niches/verdict/{go, maybe, no}.
GET /api/v1/niches/{slug}
A catalog page with its report and related niches, no token needed.
GET /api/v1/tickets
Support tickets of the account. POST /tickets opens one (subject, body), GET /tickets/{id} reads the thread, POST /tickets/{id}/messages replies, POST /tickets/{id}/close closes.
GET /api/v1/notifications
Notifications of the account with a title, a text and what to open. POST /notifications/{id}/read and POST /notifications/read mark them read.
GET /api/v1/account
The account with its plan and quota. PATCH changes name, timezone, market and the email about finished researches.
GET /api/v1/quota
Remaining researches and when the next one becomes available.
GET /api/v1/user
The authenticated account.

Errors return JSON with a message; validation errors include field details (422). Research not owned by the token's account returns 404.