- Brand
- Manifold
- Category
- Marketing
- Primary Subcategory
- AI Search & LLM Visibility (AEO/GEO)
Integration details
Description
Manifold brings live SEO and marketing data into ChatGPT. Do keyword research, check Google rankings, analyze backlinks and competitors, measure your brand's visibility in AI search, and research Reddit, TikTok, Instagram, YouTube, LinkedIn and competitors' ads, all in one conversation. Ask in plain English: ChatGPT runs the right lookup and turns the data into a summary, a table or a plan. One Manifold sign-in covers every source, with no separate account or API app for each platform. SEO and keyword research: keyword ideas with search volume, keyword difficulty, intent and CPC; live Google results (SERPs) for any country; rank checks for a site and keyword; domain overviews, ranked keywords and organic traffic estimates; competitor keyword gaps; backlinks and referring domains; on-page checks and technical SEO audits. AI search visibility (GEO and AEO): what ChatGPT and other AI search engines say about your category, which brands they recommend and which pages they cite; the questions people ask AI about a topic; and a readiness check of whether AI crawlers can reach and read your site. Google Search Console and Google Analytics: connect your own accounts in Manifold to see your clicks, queries, rankings, indexing status, sitemaps and Bing Webmaster crawl issues, and your GA4 sessions, conversions and revenue by channel, page or campaign. You can also submit a sitemap or new pages for indexing. Reddit and social listening: search Reddit posts and comments, read whole threads and follow every new post in chosen subreddits. Look up public profiles, posts, comments, video transcripts and audiences on TikTok, Instagram, YouTube, Facebook and LinkedIn. Competitor ads: the ads a brand or keyword is running in the Meta Ad Library and the Google, TikTok and LinkedIn ad libraries, with the ad copy and how long each ad has run. Local SEO and ecommerce: who ranks on Google Maps for a local search, lists of local businesses and full Business Profiles; Google Play and App Store listings, reviews, top charts and app store keywords; Amazon search results, products, sellers and Amazon keyword research; Google Shopping prices, sellers and reviews. Lead generation: search companies and people, then find and verify work email addresses for outreach lists. Marketing skills: the plugin includes skills for SEO, technical SEO, AI search, local SEO, link building, digital PR, paid ads, outbound, competitor research, market research, Reddit, TikTok, Instagram, YouTube, LinkedIn, Facebook, creators, app stores, Amazon and Google Shopping. Each holds dated, sourced findings on what works now and how to read the data without being misled, so ChatGPT plans with current evidence rather than old training data. Who it is for: marketers, SEO and content teams, founders, growth teams, agencies and sales teams who want their research done in one conversation instead of across several dashboards. How it works: sign in with your Manifold account when you connect. Most tools look things up and change nothing. A few take an action you ask for: submitting a sitemap or pages to your own Search Console or Bing, starting a technical crawl or an AI answer run, or sending feedback to Manifold. Lookups draw on your Manifold workspace's credit balance, and workspace owners can switch data sources off in the Manifold app. Limitations: Manifold does not post, publish or send messages. Keyword and ranking data covers Google. Reddit and social search results are ranked samples of public content, not complete archives. Search Console and Google Analytics data needs those accounts connected in Manifold first. Technical crawls and AI answer runs take a minute or two. Contact data is professional information only.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- AI Search & LLM Visibility (AEO/GEO)
- Secondary Subcategories
- None listed
- Brand
- Manifold
- Access
- Account required
- First tracked
- 2026-10-30
- Tool count
- 105
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Manifold marketing data
Get updates when Manifold marketing data’s Discoverability Score or category rank changes.
Competing in ChatGPT AI Search & LLM Visibility (AEO/GEO)
View Category105 tools agents can invoke
Find and verify the work email of one named person. The only paid reveal keyed by a person; it runs a waterfall of sources (findymail, then icypeas) and stops at the first verified hit. Use when: you have a person and their company and need an address to send to, "get me the email of Jordan Blake at acme.com", after leads_search_people found the person. Not for: anyone at a website (no name), use leads_get_domain_emails. Checking an address you already hold, use leads_get_email_status. The person's role and history, use leads_get_person. Returns: Record. first_name, last_name, domain, email, confidence (0 to 100, null when the source gives none), verification_status (valid | accept_all | invalid | unknown), found_by (the source that hit), position, linkedin_url, twitter, phone, sources[] (url, last_seen_at: where the address was seen). verification_status is the verdict of the source that hit: findymail returns only addresses it verified itself, catch-all domains included, so its hits read valid with null confidence and no sources; only a hit with no verdict is checked by the verifier before it is returned. leads_get_email_status asks that other verifier, which can call the same address accept_all. position, linkedin_url, twitter, phone and sources are null or empty unless the source that hit reports them. NoData when no source finds one; do not retry. meta.providers_tried lists the sources asked, in order; with an id and no name the first is the people source that turns the profile into a name and domain, not a finder that missed. A source that does not answer in time is skipped; when none answers, ProviderUnavailable at no charge. Give id, or first_name + last_name + domain, or both: the name and domain beside an id skip the paid profile lookup. Cost: 7 credits on a hit, 31 when provider is hunter, plus 9 for an id given without a name; nothing on NoData. Cached 90 days. Example: {"first_name": "Jordan", "last_name": "Blake", "domain": "acme.com"}
leads_get_email
Whether a site is set up for AI answer engines, from about seventeen live fetches of its origin, free. Checks what the engines document as gating their answers: robots.txt access for every known AI crawler (search, user fetch, training), CDN or WAF rules that turn away the answer crawlers' user agents before robots.txt is read, content present in the raw HTML without JavaScript on the homepage and on one page sampled from the sitemap, noindex and snippet directives, then freshness signals, redirect chains, sitemap, title and description, structured data, and llms.txt. Use when: "is our site ready for AI search", "do we block GPTBot", "are we blocking ChatGPT at Cloudflare", "do we have an llms.txt", before an AI visibility push. Not for: what the engines answer, use aeo_run_ai_answers. A full technical audit, use seo_run_technical_crawl. One page's on-page tags, use seo_get_page. Returns: Record. checks[] (check, ok, tier, detail, source), failing checks first. tier says how much a check is worth: blocks_citations is documented by an engine, evidence_backed is measured, hygiene is standard practice, policy is a legitimate choice that never fails, unproven is reported but never fails on absence (llms.txt, schema presence). Plus the findings behind them: robots_txt (ai_bots[], sitemaps, content_signal), edge (probes[] per answer crawler user agent), homepage and sample_page (status, word_count and js_shell from the raw HTML, canonical, robots and schema tags, dates; sample_page is the first content URL in the sitemap, null when there is none), markdown (whether the origin answers Accept: text/markdown, which passes the JavaScript check), redirects[], sitemap, llms_txt and llms_full_txt. No crawl, no LLM call. Cost: 0 credits, rate limited. Cached 1 hour. Example: {"target": "example.com"}
aeo_get_site_readiness
Monthly Amazon search volume for up to 1,000 keywords you already have, in the order given. Use when: "how many people search Amazon for X", comparing Amazon demand with Google demand, sizing a product idea on Amazon. Not for: Google volume, use seo_get_keyword_metrics. Finding keywords, use amazon_search_keywords. Returns: List. rows[]: keyword, volume (monthly Amazon searches; null = no data). Cost: 5 + 5 per 100 keywords. 10 keywords = 6 credits. Cached 7 days. Example: {"keywords": ["standing desk", "desk converter"]}
amazon_get_keyword_metrics
The comments on one Facebook post. Use when: reading what people replied to a page or a group post. Not for: the post itself, use facebook_get_post. Comments across many posts, which Facebook does not offer. Returns: List. rows[]: one comment each: author, created_at, text (cut at 2000 characters), likes, replies, and parent_id and depth for a reply. Cost: 1 credit per page. Cached 6 hours. Example: {"url": "https://www.facebook.com/reel/1535656380759655"}
facebook_get_comments
The posts in one Facebook group, newest first. Use when: watching a community you sell into, the way reddit_get_new_posts watches a subreddit. Not for: a page's own posts, use facebook_get_posts. A complete window since a moment, which Facebook does not offer: page with the cursor and dedupe on id. Returns: List. rows[]: posts with author and author_followers, created_at, text (cut at 2000 characters), likes, comments, shares, saves, views, media, duration_s, links, transcript and top_comments[]. top_comments are the comments Facebook shows under the post, with each commenter's profile URL. null or empty = the platform does not publish it. Give the group's url. Cost: 1 credit per page. Cached 6 hours. Example: {"url": "https://www.facebook.com/groups/742354120555345"}
facebook_get_group_posts
The posts on one Facebook page, newest first. Use when: watching what a business page publishes, judging cadence and reactions. Not for: a group's posts, use facebook_get_group_posts. One post in full, use facebook_get_post. Returns: List. rows[]: posts with author and author_followers, created_at, text (cut at 2000 characters), likes, comments, shares, saves, views, media, duration_s, links, transcript and top_comments[]. top_comments are the comments Facebook shows under the post, with each commenter's profile URL. null or empty = the platform does not publish it. Facebook publishes no share count, so shares is null. Give one of handle (a page name) or url. Cost: 1 credit per page. Cached 6 hours. Example: {"url": "https://www.facebook.com/gymshark"}
facebook_get_posts
Every dimension and metric one Google Analytics 4 property reports, with the api_name analytics_get_report takes, custom dimensions and metrics included. Use when: a report needs a field outside the common ones, "what custom dimensions do we track", checking a conversion or event-scoped field's name before asking for it, or after analytics_get_report rejected a field name. Not for: the numbers themselves, use analytics_get_report. Returns: List, dimensions then metrics, in Google's order. rows[]: kind (dimension | metric), api_name, ui_name, description, category, custom (defined on this property: customEvent:x, customUser:x), metric_type (metrics only: TYPE_INTEGER, TYPE_FLOAT, TYPE_SECONDS, TYPE_CURRENCY and so on). Several hundred rows; filter with custom or category. Cost: 0 credits. Cached 1 day. Example: {"property": "properties/123456789", "limit": 1000}
analytics_get_fields
The comments on one Instagram post or reel. Use when: reading what an audience said, finding the questions a product post keeps getting. Not for: the post itself, use instagram_get_post. Comments across many posts, which Instagram does not offer. Returns: List. rows[]: one comment each: author, created_at, text (cut at 2000 characters), likes, replies, parent_id (the comment a reply answers) and depth (1 for a reply). Replies only come back when you ask for them. Cost: 1 credit per page, or 15 with include_replies. Cached 6 hours. Example: {"url": "https://www.instagram.com/p/DKSMEpKRd6h/"}
instagram_get_comments
The posts on one Instagram account, newest first. Use when: "what has this account been posting", judging cadence and engagement before a partnership. Not for: reels only, use instagram_get_reels. One post in full, use instagram_get_post. Posts by hashtag, use instagram_search_posts. Returns: List. rows[]: posts with author and author_followers, created_at, text (cut at 2000 characters), likes, comments, shares, saves, views, media, duration_s, links, transcript and top_comments[], plus collaborators (co-authors) and tagged (the accounts tagged in the media). null or empty = the platform does not publish it. likes is null when the owner hides like counts. Cost: 1 credit per page. Cached 6 hours. Example: {"handle": "gymshark"}
instagram_get_posts
The reels on one Instagram account, newest first. Use when: video is what matters: watching a brand's reel cadence, pulling a creator's recent reels. Not for: every post type, use instagram_get_posts. What is said in a reel, use instagram_get_transcript. Returns: List. rows[]: reels with author and author_followers, created_at, text (cut at 2000 characters), likes, comments, shares, saves, views, media, duration_s, links, transcript and top_comments[], plus collaborators (co-authors), tagged (the accounts tagged in the media) and music (the audio). null or empty = the platform does not publish it. likes is null when the owner hides like counts. Cost: 1 credit per page. Cached 6 hours. Example: {"handle": "gymshark"}
instagram_get_reels
The posts on one LinkedIn company page, newest first. Use when: watching what a competitor publishes, judging cadence and engagement. Not for: posts by topic across LinkedIn, use linkedin_search_posts. One post in full, use linkedin_get_post. Returns: List. rows[]: posts with author, created_at, text (cut at 2000 characters) and transcript. The listing carries no engagement, views or media, so those are null; linkedin_get_post has likes, comments and media for one post. created_at is approximate: the platform shows an age such as "3 weeks ago", so it is exact only to that unit. Give one of handle (the company slug) or url. Cost: 1 credit per page. Cached 6 hours. Example: {"handle": "shopify"}
linkedin_get_company_posts
The comments on one Reddit thread, flattened in reading order with their reply depth. Use when: "what did people reply", judging whether a thread is worth answering, pulling the objections out of a discussion. Not for: comments across many threads, use reddit_search_comments. The post itself, use reddit_get_post. Returns: List, in reading order: a reply follows the comment it answers. rows[]: id, post_id, post_title, parent_id (the comment it answers, null at top level), subreddit, author, created_at, score, body (cut at 2000 characters), url, depth (0 is top level). meta.cursor loads more of the thread. Cost: 1 credit per call, one page of the thread. Cached 1 hour. Example: {"url": "https://www.reddit.com/r/startups/comments/1lfbo7u/what_crm_do_you_use/"}
reddit_get_comments
Domains that share search results with a target, with how many keywords overlap. SERP competitors, not business competitors. Use when: "who competes with example.com in search", "which sites show up for the same queries as X", choosing competitors for a keyword gap. Not for: the keywords themselves, use seo_get_keyword_gap. A single domain's strength, use seo_get_domain_overview. Returns: List. rows[]: domain, shared_keywords, avg_position, organic_traffic, organic_keywords, paid_traffic, paid_keywords. Sorted by shared keywords. The target itself is excluded. A traffic figure saved before 1 November 2026 may be on DataForSEO's older traffic model: take a new baseline rather than compare across that date. Cost: 5 + 5 per 100 rows. Default 100 rows = 10 credits. Cached 7 days. Example: {"target": "example.com", "limit": 20}
seo_get_serp_competitors
The comments on one TikTok video. Use when: reading what an audience actually said, finding objections and questions under a creator's post. Not for: comments across many videos (there is no such search on TikTok). The video itself, use tiktok_get_video. Returns: List. rows[]: one comment each: author, created_at, text (cut at 2000 characters), likes, replies, and parent_id and depth for a reply. Cost: 1 credit per page. Cached 6 hours. Example: {"url": "https://www.tiktok.com/@gymshark/video/7517114944362499342"}
tiktok_get_comments
The accounts that follow one TikTok account, with their own follower counts. Use when: judging whether a creator's audience is real, looking for the notable accounts in a following. Not for: where an audience is in the world, use tiktok_get_audience. How big the account is, use tiktok_get_profile. Returns: List. rows[]: handle, name, url, followers, following, country (the account's region code), bio. Cost: 1 credit per page. Cached 7 days. Example: {"handle": "gymshark"}
tiktok_get_followers
The videos one TikTok account has posted, newest or most viewed first. Use when: "what has this creator posted", judging how often a brand posts, pulling a creator's recent work before a partnership. Not for: one video in full, use tiktok_get_video. What was said in it, use tiktok_get_transcript. Videos by topic rather than by account, use tiktok_search_videos. Returns: List. rows[]: videos with author and author_followers, created_at, text (cut at 2000 characters), likes, comments, shares, saves, views, media, duration_s, links, transcript and top_comments[]. saves is how many people saved it; music is the sound and collaborators the branded-content partners. null or empty = the platform does not publish it. Cost: 1 credit per page. Cached 6 hours. Example: {"handle": "gymshark", "sort": "popular"}
tiktok_get_videos
The recent posts on one X account, newest first, or for some accounts its most-liked posts (feed says which). Use when: "what has this account been saying", watching a competitor's announcements. Not for: keyword search across X, which is not covered here; use one account at a time. One post, use twitter_get_tweet. Returns: List. feed: recent (the latest posts, newest first after any pinned post) or most_liked (about 100 of the account's most-liked posts across years, sorted by likes: what X shows a signed-out visitor for some accounts; posting cadence and current medians cannot be read from it). rows[]: posts with author and author_followers, created_at, text (cut at 2000 characters), likes, comments, shares, saves, views, media, duration_s, links, transcript and top_comments[]. null or empty = the platform does not publish it. shares is reposts plus quotes, saves is bookmarks, comments is replies, and links are expanded from t.co. X returns one page, so meta.cursor is null. Cost: 1 credit. Cached 6 hours. Example: {"handle": "stripe"}
twitter_get_tweets
The comments on one YouTube video, most liked first. Use when: reading what an audience said, finding the objections under a review or a tutorial. Not for: the video itself, use youtube_get_video. What is said in it, use youtube_get_transcript. Returns: List. rows[]: one comment each: author, created_at, text (cut at 2000 characters), likes, replies, is_creator (true when the channel itself replied), and parent_id and depth (the reply level) for a reply. created_at is approximate: the platform shows an age such as "3 weeks ago", so it is exact only to that unit. Cost: 1 credit per page. Cached 6 hours. Example: {"url": "https://www.youtube.com/watch?v=5EWaxmWgQMI"}
youtube_get_comments
The videos on one YouTube channel, newest or most viewed first. Use when: "what does this channel publish", judging cadence and view counts before a sponsorship. Not for: one video in full, use youtube_get_video. What is said in it, use youtube_get_transcript. Returns: List. rows[]: videos with author and author_followers, created_at, text (cut at 2000 characters), likes, comments, shares, saves, views, media, duration_s, links, transcript and top_comments[]. null or empty = the platform does not publish it. A listing carries views and length; likes and comments come with youtube_get_video. Cost: 1 credit per page. Cached 6 hours. Example: {"handle": "@ThePatMcAfeeShow", "sort": "popular"}
youtube_get_videos
One Facebook page: its followers, its category, its address and its website. Use when: checking a business page is real and current, reading its category and contact details. Not for: its posts, use facebook_get_posts. Its ads, use ads_get_advertiser_ads with platform facebook. Returns: Record. The page's handle, name, bio, followers, likes, website, links, email and phone (its public contact details), running_ads (whether it is advertising now) and ad_library_id (what ads_get_advertiser_ads takes for it), with other profile fields where Facebook fills them. null or empty = the platform does not publish it. kind is company, because these are pages rather than people. Give one of handle (a page name) or url. Cost: 1 credit. Cached 24 hours. Example: {"url": "https://www.facebook.com/gymshark"}
facebook_get_profile
One Facebook post with its reactions, comments, shares and views. Use when: a row is worth the detail, or you have a URL and nothing else. Not for: the comments themselves, use facebook_get_comments. What is said in a video, use facebook_get_transcript. Returns: Record. rows[]: the one post, with author and author_followers, created_at, text (cut at 2000 characters), likes, comments, shares, saves, views, media, duration_s, links, transcript and top_comments[]. null or empty = the platform does not publish it. Cost: 1 credit. Cached 6 hours. Example: {"url": "https://www.facebook.com/reel/1535656380759655"}
facebook_get_post
What is said out loud in one Facebook video or reel, as text. Use when: reading a video without watching it, pulling the claims out of a page's ad or clip. Not for: the post's text, which facebook_get_post already returns. Returns: Record. platform, url, language, text (the full transcript, uncut). NoData when the post carries no speech. Cost: 1 credit. Cached 30 days. Example: {"url": "https://www.facebook.com/reel/1535656380759655"}
facebook_get_transcript
A Google Analytics 4 report from the user's own property: any metrics by any dimensions over a date range, optionally against a second range. Use when: "how much traffic did we get last month", sessions or conversions by channel, landing page or campaign, "which pages convert", revenue by source, a traffic drop by channel against the period before, organic sessions next to Search Console clicks. Not for: Google search queries, use console_get_search_analytics. A site the user does not own, use seo_get_traffic_estimates. Returns: List. rows[]: one object per row keyed by api_name, dimensions as strings and metrics as numbers; with a comparison each row also carries dateRange (current | previous). metric_types (TYPE_SECONDS is seconds, TYPE_CURRENCY is in currency_code), currency_code, time_zone, subject_to_thresholding (Google withheld small rows for privacy), data_loss_from_other_row (rows folded into (other)). meta.rows_available is Google's row count. Rates such as engagementRate are 0 to 1. Data settles within about a day. Give compare_start_date and compare_end_date together, or neither. Cost: 0 credits. Cached 1 hour. Example: {"property": "properties/123456789", "metrics": ["sessions", "keyEvents"], "dimensions": ["sessionDefaultChannelGroup"], "start_date": "2026-09-01", "end_date": "2026-09-30", "compare_start_date": "2026-08-01", "compare_end_date": "2026-08-31"}
analytics_get_report
One LinkedIn company page: headcount, industry, location and website. Use when: sizing a company from its own page, confirming an industry and a headcount band before outreach. Not for: a company's own posts, use linkedin_get_company_posts. A richer firmographic record, use leads_get_company. A person, use linkedin_get_profile. Returns: Record. The page's handle, name, bio, followers, website, location, industry, employees (LinkedIn's own headcount), founded, company_type, topics (its specialties), people (the few employees the page shows, with profile URLs and usually no title) and related (similar pages), with other profile fields where LinkedIn fills them. null or empty = the platform does not publish it. kind is company. running_ads and ad_library_id are always null here: the page does not say whether the company advertises; ads_get_advertiser_ads with platform linkedin and the company name does. Give one of handle (the company slug) or url. Cost: 1 credit. Cached 24 hours. Example: {"handle": "shopify"}
linkedin_get_company
One LinkedIn post with its text, its author, its engagement and its first commenters. Use when: a row from a search is worth the detail, or you have a URL and nothing else. Not for: the commenters as rows to page or export, use linkedin_get_comments. A company's whole feed, use linkedin_get_company_posts. Returns: Record. rows[]: the one post, with author and author_followers, created_at, text (cut at 2000 characters), likes, comments, shares, saves, views, media, duration_s, links, transcript and top_comments[]. top_comments are up to 10 commenters with their profile URLs, the same people linkedin_get_comments returns as rows. null or empty = the platform does not publish it. media is video only for a video stream; a photo, a document carousel or a GIF reads image. Cost: 1 credit. Cached 6 hours. Example: {"url": "https://www.linkedin.com/posts/aagupta_what-you-need-to-know-ai-agents-activity-7354600338621906944-RvXR"}
linkedin_get_post
The comments LinkedIn shows on one post, each with the commenter's profile URL. Use when: pulling the people who engaged with a post: a competitor's launch, a thought leader in your category, your own post. Each author_url goes straight into linkedin_get_profile or leads_get_person. Not for: every comment on a busy post (LinkedIn shows up to 10 to a logged-out reader, so a post with 200 comments returns 10). Reactions, which LinkedIn does not show at all. Many posts at once, use linkedin_search_posts, whose rows carry the same commenters in top_comments. Returns: List. rows[]: one comment each: author (the profile's slug, the part after /in/ or /company/), author_url (on www.linkedin.com), text (cut at 2000 characters). LinkedIn gives no time, likes or replies for a comment, so those are null. meta.cursor is always null: there is no next page. Cost: 1 credit. Cached 6 hours. Example: {"url": "https://www.linkedin.com/posts/aagupta_what-you-need-to-know-ai-agents-activity-7354600338621906944-RvXR"}
linkedin_get_comments
One LinkedIn person: their about text, location, followers, companies and latest posts. Use when: checking a person before outreach, reading how they describe themselves. Not for: a company page, use linkedin_get_company. An email address, use leads_get_email. A person's full employment record, use leads_get_person. Returns: Record. The profile's handle, name, bio, followers, location, experience[] (the companies and schools on the profile, with dates but no titles), recent_posts[] (their latest posts, for linkedin_get_comments) and related (similar profiles), with other profile fields where LinkedIn fills them. null or empty = the platform does not publish it. Give one of url or handle (the part after /in/). Cost: 1 credit. Cached 24 hours. Example: {"url": "https://www.linkedin.com/in/williamhgates"}
linkedin_get_profile
One Reddit thread in full: the whole post body, its score, its flair and how big the community is. Use when: a row from a search or a check-in is worth reading properly, or you need the full text a row cut at 2000 characters. Not for: the replies, use reddit_get_comments. Finding threads in the first place, use reddit_search_posts or reddit_get_new_posts. Returns: Record. id, subreddit, title, author, created_at, score, comments, upvote_ratio, url, link_url, body (full), flair, over_18, is_video, locked, archived. Cost: 1 credit. Cached 1 hour. Example: {"url": "https://www.reddit.com/r/startups/comments/1lfbo7u/what_crm_do_you_use/"}
reddit_get_post
The top organic results and SERP features Google shows for one query. Use when: "what ranks for X", "who is on page one for X", "is there a featured snippet or AI overview for X". Not for: where one site ranks for a keyword, use seo_get_position (it scans the top 100 for you). Keyword ideas, use seo_search_keywords. The businesses Google Maps ranks for a local search, use maps_search_places. Returns: Record. features[] (featured_snippet, people_also_ask, video, ai_overview and others), results[] (rank, organic_rank, type, url, domain, title, snippet, published_at, rating), related_searches[], ai_overview (text, references[]) or null, results_count, check_url. depth counts organic rows: the default returns 10 organic results whenever Google has them, with the features ranked among them on top. Each People Also Ask question and each forum thread is its own row at its block's rank; for a question, title is the question and snippet the answer, url null when Google's answer is an AI overview. location localises the local pack, not the organic rows of a bare service search: put the town in the keyword ("dentist columbus ohio") for local organic results. Paid ads seldom come back, so the page says nothing about who bids on the query; a named rival's search ads are in ads_get_advertiser_ads with platform google. Cost: 1 credit per 10 results, +1 with ai_overview. Default top 10 = 1 credit. Cached 24 hours. Example: {"keyword": "hubspot alternative", "depth": 10, "ai_overview": true}
seo_get_serp
One Google Shopping product: description, specs, images, rating and its offers from each store. Use when: "what specs does Google list for this product", "how is it described and rated across stores". Not for: the store list with shipping and total price, use shopping_get_sellers. Reviews, use shopping_get_reviews. Returns: Record. product_id, gid, data_docid, title, description, url, images[], rating, ratings_count, specs[] (name, value), offers[] (seller, url, price, regular_price, currency, seller_rating, seller_ratings_count, availability). Pass product_id, gid and data_docid together, from one shopping_search_products row. Cost: 1 credit. Cached 1 day. Can take up to a minute. Example: {"product_id": "13896795030841728717", "gid": "12076690216614034454", "data_docid": "10381679383724335789"}
shopping_get_product
Reviews of one Google Shopping product pooled from the stores that sell it, with the count at each star rating. Use when: "what do buyers say about this product", "what do 1-star reviews of competitor's product complain about". Not for: app reviews, use apps_get_reviews. Amazon reviews: not available. Returns: Record. product_id, title, rating, ratings_count, stars[] (stars, count), rows[]: rating, title, text, author, source (the store the review came from), published_at. Pass product_id, gid and data_docid together, from one shopping_search_products row. Cost: 5 credits per 100 reviews. Default 100 = 5 credits. Cached 7 days. Can take up to a minute. Example: {"product_id": "13896795030841728717", "gid": "12076690216614034454", "limit": 50}
shopping_get_reviews
Where one TikTok account's audience is, by country. Use when: checking a creator reaches the market you sell in, before paying for a partnership. Not for: who the followers are, use tiktok_get_followers. The account's size, use tiktok_get_profile. Returns: List, largest share first. rows[]: country, country_code, share (percent, a decimal), count. The split comes from a sample of followers, a few hundred for an account of millions: count is followers in that sample, not in the account, so read share and ignore count as a size. Cost: 26 credits, because the vendor charges 26 for this one call. Check the handle with tiktok_get_profile first. Cached 7 days. Example: {"handle": "gymshark"}
tiktok_get_audience
One TikTok account: its follower count, its lifetime likes and how many videos it has posted. Use when: sizing a creator or a brand on TikTok, checking a handle is real, reading a bio before outreach. Not for: the account's videos, use tiktok_get_videos. Where its audience is, use tiktok_get_audience. Finding accounts by topic, use tiktok_search_videos and read the authors. Returns: Record. The account's handle, name, bio, verified, followers, following, posts_count, likes, views, website (the link in bio) and links, with other profile fields where TikTok fills them. null or empty = the platform does not publish it. Cost: 1 credit. Cached 24 hours. Example: {"handle": "@gymshark"}
tiktok_get_profile
What is said out loud in one TikTok video, as text. Use when: reading a video without watching it, pulling the claims or the hook out of an ad or a review. Not for: the video's numbers, use tiktok_get_video. The written caption, which tiktok_get_video already returns as text. Returns: Record. platform, url, language, text (the full transcript, uncut). NoData when the video carries no speech the platform kept. Cost: 1 credit, or 11 with ai_fallback. Cached 30 days. Example: {"url": "https://www.tiktok.com/@gymshark/video/7517114944362499342"}
tiktok_get_transcript
One TikTok video with its engagement: views, likes, comments, shares and its length. Use when: a row from a search or a listing is worth the detail, or you have a URL and nothing else. Not for: what was said in it, use tiktok_get_transcript. The replies, use tiktok_get_comments. Returns: Record. rows[]: the one video, with author and author_followers, created_at, text (cut at 2000 characters), likes, comments, shares, saves, views, media, duration_s, links, transcript and top_comments[]. saves is how many people saved it; music is the sound and collaborators the branded-content partners. null or empty = the platform does not publish it. Cost: 10 credits when the vendor has to fetch the media, 1 when it does not. The estimate is the higher one, so max_credits never surprises you. Cached 6 hours. Example: {"url": "https://www.tiktok.com/@gymshark/video/7517114944362499342"}
tiktok_get_video
One YouTube channel: subscribers, total views and when it joined. Use when: sizing a channel before a sponsorship, checking a handle, reading a channel description. Not for: its videos, use youtube_get_videos. Videos by topic, use youtube_search_videos. Returns: Record. The channel's handle, name, bio, verified, followers (the subscriber count), posts_count, views, links (the channel's links), website (the first link that is not a profile on another platform), email (where the channel publishes one) and topics (its keywords), with other profile fields where YouTube fills them. null or empty = the platform does not publish it. kind is channel. Cost: 1 credit. Cached 24 hours. Example: {"handle": "@ThePatMcAfeeShow"}
youtube_get_channel
The transcript of one YouTube video, as text. Use when: reading a video instead of watching it, pulling claims, chapters or quotes out of long content. Not for: the video's numbers, use youtube_get_video. The comments, use youtube_get_comments. Returns: Record. platform, url, language, text (the full transcript, uncut). NoData when the video has no captions. Cost: 1 credit. Cached 30 days. Example: {"url": "https://www.youtube.com/watch?v=5EWaxmWgQMI"}
youtube_get_transcript
One YouTube video with its views, likes, comments and length. Use when: a row is worth the detail, or you have a URL and nothing else. Not for: what is said in it, use youtube_get_transcript. The comments, use youtube_get_comments. Returns: Record. rows[]: the one video, with author and author_followers, created_at, text (cut at 2000 characters), likes, comments, shares, saves, views, media, duration_s, links, transcript and top_comments[]. links are the links in the description, sponsors' and affiliates' included; collaborators are co-creators. null or empty = the platform does not publish it. Cost: 1 credit. Cached 6 hours. Example: {"url": "https://www.youtube.com/watch?v=5EWaxmWgQMI"}
youtube_get_video
Link totals for a domain or page: backlinks, referring domains, dofollow share, link types and domain rank. Use when: "how many links does X have", "what is X's link profile like", a quick authority check alongside seo_get_domain_overview. Not for: the individual links or their anchor text, use seo_get_backlinks. The sites linking, use seo_get_referring_domains. Domain rank for many domains, use seo_get_domain_ratings. Returns: Record. domain_rank (equals seo_get_domain_overview's domain_rank), backlinks, referring_domains, referring_main_domains, referring_ips, dofollow_share (0 to 1), broken_backlinks (links to a page of the target that answers 4xx or 5xx), broken_pages (such pages), spam_score (backlinks' average, 0 to 100), target_spam_score, first_seen, and counts by link type, attribute, placement, platform, TLD and country (top 10). null = provider has no data. Cost: 10 credits flat. Cached 7 days. Example: {"target": "competitor.com"}
seo_get_backlink_summary
One business's full Google Business Profile: categories, hours, description, rating breakdown and the topics its reviews mention. Use when: "audit this business's Google profile", "what do reviews of this clinic talk about", "what is this practice's primary category", checking a prospect before outreach. Not for: finding businesses or a business's local rivals, use maps_search_places (by search) or maps_search_businesses (by area and filters). The review text itself is not returned. A company's firmographics, use leads_get_company. Returns: Record. place_id, cid, name, category, additional_categories[], address, phone, website, domain, rating, reviews, is_claimed, status, maps_url, description, rating_counts[] (1 star first), hours[] (day, open, close as HH:MM; a day with no row is closed), attributes[], topics[] (topic, mentions), services[], people_also_search[], book_online_url. services[] and people_also_search[] come back empty upstream, and attributes[] holds little beyond accessibility: an empty list is not a gap in the profile. NoData when Google has no profile for the lookup. Give exactly one of place_id, cid or name. Cost: 2 credits. Cached 7 days. Example: {"place_id": "ChIJP0warDDowokRfvXMkBqL5Cg"}
maps_get_place
The full firmographic record of one company, by domain. Use when: "tell me about acme.com", sizing a company, the industry, revenue range and headcount growth behind a domain, filling in a search row. Not for: search traffic and rankings, use seo_get_domain_overview. Who works there, use leads_search_people. Email addresses, use leads_get_domain_emails. Returns: Record. id, name, domain, website, linkedin_url, industry, industries[], employees, headcount_range, headcount_growth[] (months, percent), location, founded_year, company_type, description, keywords[], revenue (USD, where disclosed), revenue_min and revenue_max (the estimated range, USD), total_funding, funding_stage, technologies[], phone, ticker. null = the provider does not hold it; total_funding, funding_stage, technologies and ticker are always empty. NoData when the provider does not know the domain. Cost: 1 credit. Cached 30 days. Example: {"domain": "acme.com"}
leads_get_company
Traffic estimate, ranked keyword count, position spread, top pages and domain rank for one domain. The canonical source of domain rank. Use when: "how strong is competitor.com", "how much traffic does X get", sizing a site before a deeper look. Not for: the keywords behind the traffic, use seo_get_ranked_keywords. Link counts, use seo_get_backlink_summary (its domain_rank equals this one). Many domains at once, use seo_get_domain_ratings for domain rank or seo_get_traffic_estimates for traffic. Returns: Record. domain_rank (0 to 1000 on DataForSEO, the same kind of number as Ahrefs DR or Moz DA but not the same scale), organic_traffic, organic_keywords, organic_traffic_cost (USD), positions (top_3, top_10, top_100), keyword_changes (new, up, down, lost since the provider's previous update), paid_traffic, paid_keywords, top_pages[] (url, organic_traffic, organic_keywords), history[] (12 months: month, organic_traffic, organic_keywords) only with history true. null = provider has no data. A traffic figure saved before 1 November 2026 may be on DataForSEO's older traffic model: take a new baseline rather than compare across that date. history[] may keep the older model, so compare its months with each other, not with organic_traffic. Cost: 15 credits; +56 with history. Cached 7 days. Example: {"target": "competitor.com"}
seo_get_domain_overview
Email addresses known for a website's domain, with name, role, confidence and where each was seen. The contact-finding tool for link outreach. Use when: "find someone to email at these sites about a backlink", "who runs content at example.com", "get contacts for the referring domains of X". Not for: one named person, use leads_get_email. People by title across many companies, use leads_search_people. Checking an address works, use leads_get_email_status. Choosing which sites to contact, use seo_get_referring_domains, seo_get_backlinks, seo_get_domain_ratings. Returns: List, highest confidence first. rows[]: domain, email, first_name, last_name, position, department, seniority, decision_maker, type (personal | generic), confidence (0 to 100), verification_status, sources[] (url, last_seen_at; empty = inferred from the domain's pattern), linkedin_url, twitter, phone. domains[]: domain, pattern (the address format, for example {first}.{last}), organization, accept_all (true = the server takes any address, so no address there can be proven), webmail, disposable, linked_domains[], rows_available. errors[] lists domains that failed. Addresses come back unverified for the most part; verify the shortlist with leads_get_email_status, not the whole list. Cost: 1 credit per domain + 30 per domain that returns addresses, whatever the limit. Default one domain with 30 addresses = 31 credits. Cached 30 days. Example: {"domains": ["example.com"], "department": ["marketing", "communication"], "type": "all"}
leads_get_domain_emails
Keywords one competitor ranks for in the top 100 that the target does not rank for at all. Use when: "what does competitor.com rank for that we do not", "find gaps against X", content opportunities from a rival. Not for: everything a domain ranks for, use seo_get_ranked_keywords. Finding who the competitors are, use seo_get_serp_competitors. Fresh ideas around a topic, use seo_search_keywords. Returns: List. rows[]: keyword, competitor, competitor_rank, competitor_url, volume, kd, cpc, intent. Sorted by volume. Cost: 5 + 5 per 100 rows. Default 100 rows = 10 credits. Cached 7 days. Example: {"target": "example.com", "competitor": "competitor.com", "limit": 100}
seo_get_keyword_gap
An on-page snapshot of one URL: title, meta description, canonical, robots, headings, word count, schema types and link counts. Fetched live, free. Use when: "check the on-page SEO of this URL", "what schema does this page use", "what jobs are on their careers page", a quick look before a crawl. Not for: a whole site, use seo_run_technical_crawl. Rankings for the page, use seo_get_ranked_keywords with the URL. What the page ranks against, use seo_get_serp. Returns: Record. url, final_url, status, title, meta_description, canonical, robots_meta, lang, h1[], h2[], word_count, schema_types[], links_internal, links_external, images, images_without_alt; with include, links[] (text, url) and text (without nav, header and footer). null = the tag is absent. Cost: 0 credits, rate limited. Cached 1 hour. Example: {"url": "https://example.com/pricing"}
seo_get_page
The full record of one person: real name, title, company, location, LinkedIn, employment history and education. No email. Use when: filling in a search row by id, "who is the head of growth at acme.com", checking a person's current role before outreach. Not for: the email, use leads_get_email (the paid reveal). Many people at once, use leads_search_people. Returns: Record. id, first_name, last_name, headline, title, title_start, seniority, company, company_domain, company_id, company_linkedin_url, company_employees, company_industry, location, linkedin_url, has_email, summary, employment_history[] (company, title, start, end, current; newest first), education[] (school, degree, field, start, end), skills[], languages[]. Dates are YYYY-MM. null or empty = the provider does not hold it; looked up by name and domain, the history is the current role only and education, skills and languages are empty. NoData when nobody matches. Give id, or first_name + last_name + domain, or linkedin_url. Cost: 9 credits by id or linkedin_url, 3 by name and domain, nothing on NoData. Cached 30 days. Example: {"first_name": "Jordan", "last_name": "Blake", "domain": "northstaranalytics.io"}
leads_get_person
The stores Google lists for one Google Shopping product, with base price, shipping, total and the store's rating: a price comparison. Use when: "who sells this cheapest", "is anyone undercutting us", "which retailers carry our product". Not for: the product's specs, use shopping_get_product. Amazon's sellers, use amazon_get_sellers. Returns: Record. product_id, title, rows[]: rank, seller, domain, url, price, shipping (null when free or not shown), total_price, currency, seller_rating, seller_ratings_count, availability, note. Up to 20 stores, often 5 to 10: Google's list for the product, not every store that sells it, and the store on the product's search row can be missing. Pass product_id, gid and data_docid together, from one shopping_search_products row. Cost: 2 credits. Cached 6 hours. Can take up to a minute. Example: {"product_id": "13896795030841728717", "gid": "12076690216614034454", "data_docid": "10381679383724335789"}
shopping_get_sellers
Where one target ranks for one keyword, scanning the top 100 server-side. Use when: "where does example.com rank for X", "did we make page one for X", a rank check for a handful of keywords. Not for: every keyword a domain ranks for, use seo_get_ranked_keywords. The full page-one list, use seo_get_serp. Tracking over time: monitoring_create_monitor with google_rankings. Returns: Record. keyword, target, rank (absolute, null when not in the top 100), organic_rank, url, title, scanned_depth, above[] (rank, domain, url of the organic results ahead, at most 10). For a local business, location does not localise the organic rank of a bare service search ("dentist"); put the town in the keyword ("dentist columbus ohio"), or use maps_search_places for the Maps rank. Cost: 6 credits flat, also when the target is not in the top 100. NoData (free) only when the keyword has no organic results. Cached 24 hours. Example: {"keyword": "hubspot alternative", "target": "example.com"}
seo_get_position
One community: how big it is, how busy it is, and the rules it posts, as the moderators wrote them. Use when: before you post or reply anywhere, to read the rules on self promotion; sizing a community found by reddit_search_subreddits. Not for: the posts in the community, use reddit_get_new_posts or reddit_search_posts. Finding communities, use reddit_search_subreddits. Returns: Record. name, url, weekly_active_users (visitors in a week, Reddit's measure of size; it publishes no member count), weekly_contributions (posts and comments in a week), description, rules (the text as written; read it, it is not parsed into flags), submit_text, created_at. Cost: 1 credit. Cached 7 days. Example: {"subreddit": "SaaS"}
reddit_get_subreddit
The result of a run_* tool, or TaskPending while it runs. Use when: you hold a task_id from seo_run_technical_crawl or aeo_run_ai_answers. Not for: starting work; call the run_* tool first. Returns: Record. The same shape the synchronous tool would return, under result, with meta.credits_charged as settled. A task still running holds the call up to 25 seconds, then answers TaskPending: call get_task again at once, with no wait first. TaskFailed carries the reason. Cost: 0 credits. Example: {"task_id": "task_01J..."}
get_task
Manifold marketing data ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Manifold marketing data's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Manifold marketing data alternatives on ChatGPT?
As of 2026-10-30, Manifold marketing data competes with 3RD, 8ight SEO & GEO, Actionbase, AEO/GEO by VibeSEO, Agent Ready, Agent Ready Checker, Agenticaso, AI Interpretation Layer Audit™ and 92 more in ChatGPT AI Search & LLM Visibility (AEO/GEO), ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.