avatarchannelsGet the weekly reportSubscribe

Developers

The AI Avatar Library as an API and an MCP server

A free, read-only REST API and MCP server over the library of YouTube channels run by AI avatars: who they are, our analysis of each one, the products they sell and how their funnels work. No key and no sign-in. The data is refreshed daily, and answers are cached for up to 15 minutes.

Live stats are not included yet. The API and the MCP server serve channel identity, our analysis, offers, funnels and links. Subscriber counts, views, growth and video lists stay on the website for now; their endpoints answer 404 not-in-tier, and the MCP server does not list its video and growth tools.

Use it in Claude

The MCP server is at https://avatarchannels.com/mcp. It needs no sign-in.

claude.ai and Claude Desktop: open Customize, then Connectors, then Add custom connector. Paste the URL above and choose no authentication. On the Free plan you can add one custom connector. In a chat, turn it on under + → Connectors.

Claude Code (--scope user makes it available in every project; leave it out for the current project only):

claude mcp add --scope user --transport http avatar-channels https://avatarchannels.com/mcp

A project's .mcp.json (shared with your team):

{
  "mcpServers": {
    "avatar-channels": {
      "type": "http",
      "url": "https://avatarchannels.com/mcp"
    }
  }
}

Cursor: .cursor/mcp.json in the project, or ~/.cursor/mcp.json for every project.

{
  "mcpServers": {
    "avatar-channels": {
      "url": "https://avatarchannels.com/mcp"
    }
  }
}

VS Code: .vscode/mcp.json in the project.

{
  "servers": {
    "avatar-channels": {
      "type": "http",
      "url": "https://avatarchannels.com/mcp"
    }
  }
}

Clients that only run local (stdio) servers: bridge with mcp-remote.

{
  "mcpServers": {
    "avatar-channels": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://avatarchannels.com/mcp"
      ]
    }
  }
}

The tools (all read-only):

  • search_channels — find and rank channels by topic, persona gender, age and role, language, country, what they sell and at what price, channel age and upload rate (plus subscribers, growth, views and ads in the statistics tier); lists mean any of, numbers are ranges, and `query` ranks by matching words
  • get_channel — one channel in depth: persona, topics, our analysis, its products with prices, the sales funnel and links; accepts a name, @handle, slug or YouTube URL and suggests candidates on a miss
  • find_offers — products the channels sell (ebooks, cookbooks, courses …): by type, platform, USD price range, product words, or the channel's topic, gender and language; cheapest first
  • compare_channels — 2 to 5 channels side by side, with the leader of each metric
  • library_overview — what the library holds: counts per topic, language, country, gender, persona, offer type and price range
  • Not in this tier: get_channel_videos and get_growth (they serve YouTube statistics).

Lists return 10 results by default and at most 25; every result is kept small enough for Claude's tool-output limits. A list filter takes any of several values, a language or country may be a code or an English name, and an unknown parameter is refused with the list of valid ones. Prices come as money ($39.99).

Try:

  • “Find AI-avatar cooking channels with a female persona that sell a cookbook, and say what each one costs.”
  • “Which German or Spanish AI-avatar channels are there, and what do they sell?”
  • “Compare two AI-avatar trucking channels: how often they upload, what they sell and how their funnels work.”

REST API

Base URL https://avatarchannels.com/api/v1. JSON, snake_case, ISO 8601 dates, null for unknown. GET only, CORS open to every origin. The OpenAPI 3.1 document is at https://avatarchannels.com/api/v1/openapi.json.

EndpointReturns
/channelsSearch and list (filters below; limit 1–100, default 24; offset; facets=1 adds the valid values)
/channels/{slug | UC id | @handle}One channel in full
/channels/{key}/offersIts offers and funnel
/channels/{key}/videosNot in this tier yet
/channels/{key}/growthNot in this tier yet
/offersOffers across the library (type, platform, price_min, price_max in USD, channel)
/compare?channels=a,b2 to 5 channels side by side
/statsTotals and every filter's valid values
/export.jsonEvery published channel in one response (analysis, offers, funnels, links; never statistics)
/openapi.jsonThe OpenAPI document
Cooking channels that sell something
curl "https://avatarchannels.com/api/v1/channels?q=cooking&sells=yes&limit=10"
One channel
curl "https://avatarchannels.com/api/v1/channels/<slug>"
Ebooks under $30
curl "https://avatarchannels.com/api/v1/offers?type=ebook&price_max=30"
The valid filter values
curl "https://avatarchannels.com/api/v1/stats"

Lists page with limit and offset; links.next and an RFC 8288 Link header point to the next page. Each channel has its library_url (https://avatarchannels.com/c/<slug>) and youtube_url.

Filters and sorts

The same filters as the website's library. A value no channel has matches nothing and is named in meta.unused_filters.

  • q — Search: Search text: channel name, handle, persona name, niche and tags
  • topic — Topic: cooking, home_cleaning, frugal_money, prepping_survival, safety_security, homesteading_gardening, health_beauty, seniors_retirement, relationships_life, golf_sports, pets, trucking, cars_vehicles, travel, fishing_outdoors, diy_repair, history_culture, faith, other
  • niche — Niche: one niche or niche tag in use, exactly (GET /stats lists them; q matches words instead)
  • gender — Gender: female, male
  • lang — Language: Language code (ISO 639-1/-3), e.g. en
  • country — Country: Country code (ISO 3166-1 alpha-2), e.g. US
  • style — Avatar style: realistic, 3d, cartoon, anime, talking_head, stylized, other
  • motion — Avatar motion: still_image, talking_head, full_body, mixed
  • persona — Persona: grandmother, grandfather, mother, father, homemaker, home_cook, chef, homesteader, tradesperson, retired_professional, expert, narrator, other
  • age — Persona age: young_adult, adult, middle_aged, senior
  • started — Started: 30d, 90d, 1y, older
  • uploads — Uploads: lt1w, 1-3w, 3-7w, daily+
  • length — Video length: lt8, 8-20, 20-40, 40+
  • sells — Sells a product: yes, no, unknown
  • offer — Offer type: ebook, cookbook, guide, course, membership, community, coaching, print_book, physical, bundle, lead_magnet, affiliate, app, other
  • price — Price: lt20, 20-39, 40-59, 60+, other
  • platform — Platform: gumroad, payhip, shopify, stripe_link, stripe_custom, lemon_squeezy, lulu, liibro, kajabi, stan, beacons, etsy, amazon, custom, unknown

sort: newest (Newest channels), price (Price (low to high)), uploads (Uploads per week), name (Name (A–Z)). Default: name.

Fields of a channel row

Each REST list row (/channels) has these fields; /channels/{key} adds the schedule, the full analysis with who wrote each field, offers with evidence links, the funnel and outbound links. The OpenAPI document has every schema. REST money is in cents (amount_cents 3999 = $39.99) and growth_pct_30d is a ratio (0.12 = +12 %). The MCP tools answer with shorter rows of their own: persona, topics, niche, language, upload rate, what the channel sells (as "cookbook $39.99") and its YouTube URL.

slugtitlehandleyoutube_urllibrary_urlavatar_urlcountrylanguagenicheavatar_styleavatar_motionpersona_archetypeai_avatar_verdictfirst_upload_atuploads_per_weekmedian_length_secondssellsoffer_typesplatformsprice_from

Analysis fields carry their provenance: ai (drafted by an AI, not reviewed yet), ai_reviewed or human, and an analysis with any AI-drafted field is marked ai_assisted. Channel descriptions are never served, and there is no revenue figure anywhere.

Errors

Errors are RFC 9457 problem details (application/problem+json) with type, title, status and detail. MCP tools answer the same problems as error results that name the valid values (or, for a channel name they cannot place, the closest channels), and refuse an unknown parameter by listing the valid ones.

invalid-parameter
A parameter is unknown, repeated or malformed. invalid_params lists each one, with its valid values when they are a closed list. Unknown parameters are refused so that random ones cannot bypass the cache.
not-found
No published channel has that slug, UC id, @handle or name.
ambiguous-channel
Several channels share that exact name; candidates lists their slugs.
not-in-tier
The endpoint serves YouTube statistics, which this deployment does not include yet.
method-not-allowed
The API is read-only: GET, HEAD and OPTIONS.
uri-too-long
Request URLs are limited to 2,048 characters.
payload-too-large
MCP request bodies are limited to 64 KiB.
rate-limited
Too many requests from one client. Wait for Retry-After seconds; repeated requests return the same cached data anyway.
unavailable
The library could not be read just now. Retry after a minute.
disabled
The API (or the MCP server) is switched off for now.

Limits and fair use

  • Answers are cached on the CDN for 15 minutes: polling faster returns the same data. Please cache on your side too.
  • Bursts of about 20 requests a second per client are fine; beyond that the API answers 429 with Retry-After.
  • Lists: at most 100 rows per request over REST, 25 over MCP. URLs up to 2,048 characters; MCP request bodies up to 64 KiB.
  • The service may be paused or changed without notice. It is provided as is, without warranty; the data can be incomplete or wrong.

Attribution

Every response carries meta.source (Channel statistics: YouTube. Analysis and offers: avatarchannels.com.), meta.powered_by and meta.as_of, the date of the newest data.

If you show or republish this data, credit avatarchannels.com with a link to the channel's library_url, and show channel statistics as YouTube data. Our analysis, offers and funnels are our own research from public pages, not data from YouTube; please do not present them as YouTube data.

For language models: /llms.txt describes the API and the MCP server in plain text.