API reference

Web

Search the web

POST /v1/web/search

Search the public web and get clean, relevant excerpts from top results. Best for: Current information, latest news, announcements, facts, funding, broad research, and public pages such as LinkedIn posts. Returns: Result titles, source URLs, relevant excerpts, publication dates, and normalized relevance scores when available. Query tips: Describe the ideal page in a specific natural-language sentence, not only keywords. For public LinkedIn posts, include the topic, place, and date range. Next: Use people_search or companies_search for structured records. Use web_read when an excerpt is not sufficient.

Input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "description": "Natural-language description of the ideal page. Use a specific sentence, not only keywords. For public LinkedIn posts, include the topic, place, and date range."
    },
    "limit": {
      "default": 10,
      "description": "Maximum number of results to return (1-25, default 10).",
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    }
  },
  "required": [
    "query"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string"
          },
          "snippet": {
            "type": "string",
            "description": "Short relevant excerpt from the page."
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "score": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          }
        },
        "required": [
          "url",
          "title",
          "snippet"
        ]
      }
    }
  },
  "required": [
    "results"
  ]
}

Read pages

POST /v1/web/read

Read known public webpages as clean full text. Best for: Extracting or summarizing complete content after web_search, or reading exact URLs supplied by the user. Returns: Clean page content with the source URL, page title, and per-URL fetch status. Query tips: Batch up to 10 URLs in one call instead of reading each page separately.

Input schema
{
  "type": "object",
  "properties": {
    "urls": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "description": "Public http(s) URLs to fetch and convert to clean text (1-10)."
    }
  },
  "required": [
    "urls"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "pages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "failed": {
            "default": false,
            "type": "boolean"
          }
        },
        "required": [
          "url",
          "content"
        ]
      }
    }
  },
  "required": [
    "pages"
  ]
}

Discovery

Search people

POST /v1/people/search

Search public professional and LinkedIn profiles. Best for: Finding employees, founders, executives, and public professional profiles by employer, role, or location. Returns: Name, current title, company, location, profile URL, and a relevant excerpt when available. Query tips: Describe the person or experience required. Put exact employer, role, and location constraints in their separate fields. Next: Use social_profile on a selected profile URL for full public details. Use social_posts for recent activity.

Input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "description": "Natural-language description of the desired person, such as 'revenue leader with enterprise SaaS experience'. Put exact employer, role, and location constraints in their separate fields."
    },
    "limit": {
      "default": 10,
      "description": "Maximum records to return (1-25, default 10).",
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    },
    "location": {
      "description": "Current location filter. Use a city, region, or country, such as 'Vienna' or 'Austria'.",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "role": {
      "description": "Current role or job-title filter, such as 'Head of Operations' or 'Founder'.",
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    },
    "company": {
      "description": "Current employer filter, such as 'Consigma'. Use this field when an exact company is known.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "query"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "people": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "profile_url": {
            "type": "string",
            "format": "uri"
          },
          "avatar_url": {
            "type": "string",
            "format": "uri"
          },
          "headline": {
            "type": "string"
          },
          "company": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "snippet": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "profile_url"
        ]
      }
    }
  },
  "required": [
    "people"
  ]
}

Search companies

POST /v1/companies/search

Search and return structured public company records. Best for: Company discovery, account research, market maps, and comparisons by industry or location. Returns: Company name, website, public profile URL, description, industry, and location when available. Query tips: Describe the ideal company. Put exact industry and location constraints in their separate fields. Next: Use web_search for broader follow-up coverage, then web_read for complete source pages.

Input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "description": "Natural-language description of the desired company, such as 'B2B software companies serving mid-market retailers'. Put exact industry and location constraints in their separate fields."
    },
    "limit": {
      "default": 10,
      "description": "Maximum records to return (1-25, default 10).",
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    },
    "location": {
      "description": "Current location filter. Use a city, region, or country, such as 'Vienna' or 'Austria'.",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "industry": {
      "description": "Industry or market filter, such as 'logistics software' or 'industrial automation'.",
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    }
  },
  "required": [
    "query"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "companies": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "website": {
            "type": "string",
            "format": "uri"
          },
          "profile_url": {
            "type": "string",
            "format": "uri"
          },
          "description": {
            "type": "string"
          },
          "industry": {
            "type": "string"
          },
          "location": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ]
      }
    }
  },
  "required": [
    "companies"
  ]
}

Find contact details

POST /v1/find/contact_detail

Find a person's verified work email or phone number from their name and company domain. Best for: Outreach preparation after the person and company are already known. Returns: The found email address with its verification status, or the found phone number, or both. Missing details come back as null. Query tips: Request only the types you need: lookups charge 5 credits per email and 30 credits per phone from the workspace balance. Include linkedin_url whenever it is known; it strongly improves phone results. Next: Use people_search first when the person or their LinkedIn URL is not known yet.

Input schema
{
  "type": "object",
  "properties": {
    "types": {
      "minItems": 1,
      "maxItems": 2,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "email",
          "phone"
        ]
      },
      "description": "Contact detail types to look up: ['email'], ['phone'], or ['email', 'phone']. Each requested type is priced separately, so request only the types you need."
    },
    "full_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The person's full name, such as 'Jane Smith'."
    },
    "company_domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The current employer's website domain, such as 'example.com'. Pass a bare domain, not a URL."
    },
    "linkedin_url": {
      "description": "The person's LinkedIn profile URL, such as 'https://www.linkedin.com/in/janesmith'. Optional, but it strongly improves phone match rates and enables backup lookup routes.",
      "type": "string",
      "format": "uri"
    }
  },
  "required": [
    "types",
    "full_name",
    "company_domain"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "email": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "address": {
              "type": "string",
              "minLength": 1
            },
            "status": {
              "type": "string"
            }
          },
          "required": [
            "address"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "phone": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "number": {
              "type": "string",
              "minLength": 1
            }
          },
          "required": [
            "number"
          ]
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "email",
    "phone"
  ]
}

Social

Get social profile

POST /v1/social/profile

Retrieve one exact public social profile from its URL. Best for: Inspecting a known LinkedIn, Instagram, TikTok, X, YouTube, or Facebook person, company, page, or channel. Returns: Available bio, audience metrics, work history, education, links, account details, recent posts, and the normalized public source record. Query tips: Pass a profile or channel URL, not a post URL. The network is detected from the URL. Next: Use social_posts when more recent posts or pagination are required.

Input schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public LinkedIn, Instagram, TikTok, X, YouTube, or Facebook profile URL over HTTPS. Use a profile or channel URL, not a post URL."
    }
  },
  "required": [
    "url"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "network": {
      "type": "string",
      "enum": [
        "linkedin",
        "instagram",
        "tiktok",
        "x",
        "youtube",
        "facebook"
      ]
    },
    "url": {
      "type": "string",
      "format": "uri"
    },
    "source_url": {
      "type": "string",
      "format": "uri"
    },
    "profile_id": {
      "type": "string"
    },
    "handle": {
      "type": "string"
    },
    "display_name": {
      "type": "string"
    },
    "headline": {
      "type": "string"
    },
    "bio": {
      "type": "string"
    },
    "location": {
      "type": "string"
    },
    "avatar_url": {
      "type": "string",
      "format": "uri"
    },
    "followers": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "following": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "posts": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "connections": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "total_likes": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "total_views": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "verified": {
      "type": "boolean"
    },
    "private": {
      "type": "boolean"
    },
    "business": {
      "type": "boolean"
    },
    "category": {
      "type": "string"
    },
    "website_url": {
      "type": "string",
      "format": "uri"
    },
    "links": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "label": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "url"
        ]
      }
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "experience": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1
          },
          "organization": {
            "type": "string",
            "minLength": 1
          },
          "organization_url": {
            "type": "string",
            "format": "uri"
          },
          "location": {
            "type": "string",
            "minLength": 1
          },
          "employment_type": {
            "type": "string",
            "minLength": 1
          },
          "workplace_type": {
            "type": "string",
            "minLength": 1
          },
          "start_date": {
            "type": "string",
            "minLength": 1
          },
          "end_date": {
            "type": "string",
            "minLength": 1
          },
          "duration": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": "string",
            "minLength": 1
          },
          "skills": {
            "default": [],
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "title"
        ]
      }
    },
    "education": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "institution": {
            "type": "string",
            "minLength": 1
          },
          "institution_url": {
            "type": "string",
            "format": "uri"
          },
          "degree": {
            "type": "string",
            "minLength": 1
          },
          "field_of_study": {
            "type": "string",
            "minLength": 1
          },
          "start_date": {
            "type": "string",
            "minLength": 1
          },
          "end_date": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": "string",
            "minLength": 1
          },
          "skills": {
            "default": [],
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "institution"
        ]
      }
    },
    "skills": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "certifications": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "issuer": {
            "type": "string",
            "minLength": 1
          },
          "issued_at": {
            "type": "string",
            "minLength": 1
          },
          "expires_at": {
            "type": "string",
            "minLength": 1
          },
          "credential_url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "name"
        ]
      }
    },
    "account_details": {
      "type": "object",
      "properties": {
        "has_channel": {
          "type": "boolean"
        },
        "highlight_reel_count": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "joined_recently": {
          "type": "boolean"
        },
        "has_public_story": {
          "type": "boolean"
        },
        "restricted": {
          "type": "boolean"
        },
        "restriction_reason": {
          "type": "string"
        },
        "facebook_page": {
          "type": "string"
        },
        "facebook_id": {
          "type": "string"
        },
        "video_count": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      }
    },
    "recent_posts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "text": {
            "default": "",
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "author_handle": {
            "type": "string"
          },
          "author_name": {
            "type": "string"
          },
          "media_urls": {
            "default": [],
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            }
          },
          "likes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "comments": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "shares": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "views": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "source_data": {
            "description": "Complete public source record returned for this post.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "id",
          "url"
        ]
      }
    },
    "related_profiles": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "handle": {
            "type": "string"
          },
          "display_name": {
            "type": "string"
          },
          "bio": {
            "type": "string"
          },
          "avatar_url": {
            "type": "string",
            "format": "uri"
          },
          "followers": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "verified": {
            "type": "boolean"
          },
          "source_data": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "url"
        ]
      }
    },
    "source_data": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Complete public source record returned for this profile. Internal execution metadata is excluded."
    }
  },
  "required": [
    "network",
    "url",
    "source_data"
  ]
}

List social posts

POST /v1/social/posts

List recent public posts or videos from one social profile URL. Best for: Reviewing recent activity from a known LinkedIn, Instagram, TikTok, X, YouTube, or Facebook profile or channel. Returns: Available post text, dates, author details, media, engagement metrics, source records, and an opaque next-page cursor. Query tips: Pass the profile or channel URL. Use the returned cursor with the same URL and limit for the next page. Next: Use social_post on a selected post URL for its complete normalized record and available metrics.

Input schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public LinkedIn, Instagram, TikTok, X, YouTube, or Facebook profile URL over HTTPS. Use a profile or channel URL, not a post URL."
    },
    "limit": {
      "default": 10,
      "description": "Maximum recent public posts or videos to return (1-50, default 10).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    }
  },
  "required": [
    "url"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "network": {
      "type": "string",
      "enum": [
        "linkedin",
        "instagram",
        "tiktok",
        "x",
        "youtube",
        "facebook"
      ]
    },
    "profile_url": {
      "type": "string",
      "format": "uri"
    },
    "posts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "text": {
            "default": "",
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "author_handle": {
            "type": "string"
          },
          "author_name": {
            "type": "string"
          },
          "media_urls": {
            "default": [],
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            }
          },
          "likes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "comments": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "shares": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "views": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "source_data": {
            "description": "Complete public source record returned for this post.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "id",
          "url"
        ]
      }
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    },
    "has_more": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "network",
    "profile_url",
    "posts"
  ]
}

Get social post

POST /v1/social/post

Retrieve one exact public social post or video from its URL. Best for: Reading complete text and available engagement data for a known LinkedIn, Instagram, TikTok, X, YouTube, or Facebook post. Returns: Available full text, date, author, media, reactions, comments, views, and the normalized public source record. Query tips: Pass the exact public post, video, or reel URL. The network is detected from the URL. Next: Use social_comments for comment text and replies. Use social_reactions for reactor identities when the network supports them. Use social_transcript when the post contains spoken video.

Input schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public LinkedIn, Instagram, TikTok, X, YouTube, or Facebook post, video, or reel URL over HTTPS."
    }
  },
  "required": [
    "url"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "network": {
      "type": "string",
      "enum": [
        "linkedin",
        "instagram",
        "tiktok",
        "x",
        "youtube",
        "facebook"
      ]
    },
    "post": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1
        },
        "url": {
          "type": "string",
          "format": "uri"
        },
        "source_url": {
          "type": "string",
          "format": "uri"
        },
        "text": {
          "default": "",
          "type": "string"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
        },
        "author_handle": {
          "type": "string"
        },
        "author_name": {
          "type": "string"
        },
        "media_urls": {
          "default": [],
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          }
        },
        "likes": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "comments": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "shares": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "views": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "source_data": {
          "description": "Complete public source record returned for this post.",
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      },
      "required": [
        "id",
        "url"
      ]
    }
  },
  "required": [
    "network",
    "post"
  ]
}

List social comments

POST /v1/social/comments

List public comments and optional replies for one exact social post URL. Best for: Reading audience discussion, reactions, questions, and reply threads on a known social post or video. Returns: Commenter identity, text, date, reactions, reply counts, nesting, source records, and an opaque next-page cursor when available. Query tips: Enable include_replies only when reply text is needed. Reuse the cursor with the same URL and filters for the next page.

Input schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public LinkedIn, Instagram, TikTok, X, YouTube, or Facebook post, video, or reel URL over HTTPS."
    },
    "limit": {
      "default": 50,
      "description": "Maximum public comments to return (1-100, default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "include_replies": {
      "default": false,
      "description": "Include public replies when the source supports them (default false).",
      "type": "boolean"
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    }
  },
  "required": [
    "url"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "network": {
      "type": "string",
      "enum": [
        "linkedin",
        "instagram",
        "tiktok",
        "x",
        "youtube",
        "facebook"
      ]
    },
    "post_url": {
      "type": "string",
      "format": "uri"
    },
    "comments": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "text": {
            "default": "",
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "author_name": {
            "type": "string"
          },
          "author_handle": {
            "type": "string"
          },
          "author_profile_url": {
            "type": "string",
            "format": "uri"
          },
          "author_avatar_url": {
            "type": "string",
            "format": "uri"
          },
          "likes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "replies": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "parent_id": {
            "type": "string"
          },
          "depth": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "pinned": {
            "type": "boolean"
          },
          "source_data": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "Complete public source record returned for this comment."
          }
        },
        "required": [
          "id",
          "source_data"
        ]
      }
    },
    "has_more": {
      "default": false,
      "type": "boolean"
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    }
  },
  "required": [
    "network",
    "post_url",
    "comments"
  ]
}

List social post reactions

POST /v1/social/reactions

List the public people or organizations that reacted to one social post or comment. Best for: Audience research, engagement analysis, and finding public profiles that reacted to known social content. Returns: Normalized reaction type, reactor name, public profile URL, position, avatar, complete public source record, and a signal when the requested limit may have truncated the list. Query tips: Pass one exact public social post or comment URL. LinkedIn is supported in V1. Use reaction_types only when specific reactions are required. Increase limit up to 100 when has_more is true. Next: Use social_profile on a selected reactor profile URL for complete public profile details.

Input schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public social post or comment URL over HTTPS. LinkedIn is supported in V1."
    },
    "limit": {
      "default": 50,
      "description": "Maximum public reactions to return (1-100, default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "reaction_types": {
      "description": "Optional normalized reaction types to include. Omit this field to include all types.",
      "minItems": 1,
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "like",
          "celebrate",
          "support",
          "love",
          "insightful",
          "funny"
        ],
        "description": "Normalized public reaction type."
      }
    }
  },
  "required": [
    "url"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "network": {
      "type": "string",
      "enum": [
        "linkedin",
        "instagram",
        "tiktok",
        "x",
        "youtube",
        "facebook"
      ]
    },
    "post_url": {
      "type": "string",
      "format": "uri"
    },
    "reactions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "reaction_type": {
            "type": "string",
            "enum": [
              "like",
              "celebrate",
              "support",
              "love",
              "insightful",
              "funny"
            ],
            "description": "Normalized public reaction type."
          },
          "reactor_name": {
            "type": "string"
          },
          "reactor_profile_url": {
            "type": "string",
            "format": "uri"
          },
          "reactor_position": {
            "type": "string"
          },
          "reactor_avatar_url": {
            "type": "string",
            "format": "uri"
          },
          "source_data": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {},
            "description": "Complete public source record returned for this reaction."
          }
        },
        "required": [
          "id",
          "reaction_type",
          "source_data"
        ]
      }
    },
    "has_more": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "network",
    "post_url",
    "reactions"
  ]
}

Search social

POST /v1/social/search

Find and search one social network for public profiles, accounts, posts, or videos. Best for: Discovering LinkedIn, Instagram, TikTok, X, YouTube, or Facebook content when no exact URL is known. Returns: Normalized profile or post results with source URLs, public text, identity, media, and available metrics. Query tips: Describe the topic, person, company, or account in natural language. For LinkedIn posts, include the topic, place, and date range. Next: Use social_profile, social_posts, or social_post on selected URLs for exact records. LinkedIn search results do not include verified engagement metrics.

Input schema
{
  "type": "object",
  "properties": {
    "network": {
      "type": "string",
      "enum": [
        "linkedin",
        "instagram",
        "tiktok",
        "x",
        "youtube",
        "facebook"
      ],
      "description": "Social network to search."
    },
    "result_type": {
      "type": "string",
      "enum": [
        "profiles",
        "posts"
      ],
      "description": "Type of public social result to return."
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160,
      "description": "Natural-language description of the profile or post to find. For LinkedIn posts, include the topic, place, and date range."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "description": "Maximum results to return (1-25)."
    },
    "cursor": {
      "description": "Opaque cursor from the previous response. Reuse it only with the same network, result type, and query.",
      "type": "string",
      "minLength": 1,
      "maxLength": 4096
    }
  },
  "required": [
    "network",
    "result_type",
    "query",
    "limit"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "network": {
      "type": "string",
      "enum": [
        "linkedin",
        "instagram",
        "tiktok",
        "x",
        "youtube",
        "facebook"
      ]
    },
    "result_type": {
      "type": "string",
      "enum": [
        "profiles",
        "posts"
      ]
    },
    "results": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "source_url": {
                "type": "string",
                "format": "uri"
              },
              "text": {
                "default": "",
                "type": "string"
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              },
              "author_handle": {
                "type": "string"
              },
              "author_name": {
                "type": "string"
              },
              "media_urls": {
                "default": [],
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "likes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "comments": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "shares": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "views": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "source_data": {
                "description": "Complete public source record returned for this post.",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "id",
              "url"
            ]
          },
          {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri"
              },
              "source_url": {
                "type": "string",
                "format": "uri"
              },
              "handle": {
                "type": "string"
              },
              "display_name": {
                "type": "string"
              },
              "bio": {
                "type": "string"
              },
              "avatar_url": {
                "type": "string",
                "format": "uri"
              },
              "followers": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "verified": {
                "type": "boolean"
              },
              "source_data": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "url"
            ]
          }
        ]
      }
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    },
    "has_more": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "network",
    "result_type",
    "results"
  ]
}

Get social transcript

POST /v1/social/transcript

Get the spoken transcript or captions for one public social video URL. Best for: Reading or summarizing spoken content from YouTube, TikTok, Instagram, Facebook, and other supported social video pages. Returns: Availability status, source and media URLs, transcript text, language, and the normalized public source record. Query tips: Pass the exact public video or post URL. A successful not_available result means no transcript was found.

Input schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public LinkedIn, Instagram, TikTok, X, YouTube, or Facebook post, video, or reel URL over HTTPS."
    }
  },
  "required": [
    "url"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "network": {
      "type": "string",
      "enum": [
        "linkedin",
        "instagram",
        "tiktok",
        "x",
        "youtube",
        "facebook"
      ]
    },
    "transcript": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "available",
            "not_available"
          ]
        },
        "source_url": {
          "type": "string",
          "format": "uri"
        },
        "media_url": {
          "type": "string",
          "format": "uri"
        },
        "transcript": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "source_data": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      },
      "required": [
        "status",
        "source_url",
        "media_url",
        "source_data"
      ]
    }
  },
  "required": [
    "network",
    "transcript"
  ]
}

Advertising

Search ads

POST /v1/ads/search

Search active and historical ads in one public ad library. Best for: Finding Meta, TikTok, Google, or LinkedIn campaigns by brand, product, slogan, market, date, or media type. Returns: Available creative text, advertiser, first and last seen dates, status, media, source records, library URLs, and an opaque next-page cursor. Query tips: Use a brand, product, slogan, or topic as the query. Add country, date, status, or media filters only when required; source support varies. Next: Use ads_get on a selected library URL for the complete ad record. Use ads_transcript for spoken Meta video creative.

Input schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "meta",
        "tiktok",
        "google",
        "linkedin"
      ],
      "description": "Public ad library: Meta, TikTok, Google, or LinkedIn."
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Brand, advertiser, product, slogan, or topic to find, such as 'running shoes' or 'Acme'."
    },
    "country": {
      "description": "Optional two-letter country code, such as 'AT' or 'US'. Omit it for the source default.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "status": {
      "description": "Optional ad delivery status, such as 'active' or 'inactive'. Omit it to include any status.",
      "type": "string",
      "maxLength": 40
    },
    "media_type": {
      "description": "Optional creative media type, such as 'image' or 'video'. Source support varies.",
      "type": "string",
      "maxLength": 40
    },
    "start_date": {
      "description": "Optional earliest ad date in YYYY-MM-DD format.",
      "type": "string",
      "format": "date",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    },
    "end_date": {
      "description": "Optional latest ad date in YYYY-MM-DD format.",
      "type": "string",
      "format": "date",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    },
    "limit": {
      "default": 20,
      "description": "Maximum ads to return (1-50, default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    }
  },
  "required": [
    "platform",
    "query"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "meta",
        "tiktok",
        "google",
        "linkedin"
      ],
      "description": "Public ad library: Meta, TikTok, Google, or LinkedIn."
    },
    "ads": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "platform": {
            "type": "string",
            "enum": [
              "meta",
              "tiktok",
              "google",
              "linkedin"
            ],
            "description": "Public ad library: Meta, TikTok, Google, or LinkedIn."
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "advertiser_name": {
            "type": "string"
          },
          "advertiser_url": {
            "type": "string",
            "format": "uri"
          },
          "text": {
            "default": "",
            "type": "string"
          },
          "media_urls": {
            "default": [],
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            }
          },
          "first_seen_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "last_seen_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "active": {
            "type": "boolean"
          },
          "source_data": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "id",
          "platform",
          "source_url",
          "source_data"
        ]
      }
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    },
    "has_more": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "platform",
    "ads"
  ]
}

Get ad

POST /v1/ads/get

Retrieve one exact public ad from its ad-library URL. Best for: Inspecting a known Meta, TikTok, Google, or LinkedIn ad after discovery or from a user-supplied URL. Returns: Available creative text, advertiser, dates, status, media, source URL, and the normalized public source record. Query tips: Pass the exact public ad-library URL. The platform is detected from the URL. Next: Use ads_transcript when a Meta video ad contains spoken content.

Input schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Exact public Meta, TikTok, Google, or LinkedIn ad-library URL over HTTPS."
    }
  },
  "required": [
    "url"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "ad": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1
        },
        "platform": {
          "type": "string",
          "enum": [
            "meta",
            "tiktok",
            "google",
            "linkedin"
          ],
          "description": "Public ad library: Meta, TikTok, Google, or LinkedIn."
        },
        "source_url": {
          "type": "string",
          "format": "uri"
        },
        "advertiser_name": {
          "type": "string"
        },
        "advertiser_url": {
          "type": "string",
          "format": "uri"
        },
        "text": {
          "default": "",
          "type": "string"
        },
        "media_urls": {
          "default": [],
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          }
        },
        "first_seen_at": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
        },
        "last_seen_at": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
        },
        "active": {
          "type": "boolean"
        },
        "source_data": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      },
      "required": [
        "id",
        "platform",
        "source_url",
        "source_data"
      ]
    }
  },
  "required": [
    "ad"
  ]
}

Search advertisers

POST /v1/ads/advertiser

Find advertisers, brands, and companies in one public ad library. Best for: Competitor research and advertiser discovery before listing individual campaigns. Returns: Advertiser ID, name, platform, public library URL, source record, and an opaque next-page cursor. Query tips: Use the advertiser or brand name. Add a two-letter country code when the market must be constrained. Next: Use ads_search with the selected advertiser name to find its public campaigns.

Input schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "meta",
        "tiktok",
        "google",
        "linkedin"
      ],
      "description": "Public ad library: Meta, TikTok, Google, or LinkedIn."
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Advertiser, brand, or company name to find, such as 'Acme'."
    },
    "country": {
      "description": "Optional two-letter country code, such as 'AT' or 'US'. Omit it for the source default.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "limit": {
      "default": 20,
      "description": "Maximum advertisers to return (1-50, default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    }
  },
  "required": [
    "platform",
    "query"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "meta",
        "tiktok",
        "google",
        "linkedin"
      ],
      "description": "Public ad library: Meta, TikTok, Google, or LinkedIn."
    },
    "advertisers": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "platform": {
            "type": "string",
            "enum": [
              "meta",
              "tiktok",
              "google",
              "linkedin"
            ],
            "description": "Public ad library: Meta, TikTok, Google, or LinkedIn."
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "source_data": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "id",
          "platform",
          "name",
          "source_url",
          "source_data"
        ]
      }
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    },
    "has_more": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "platform",
    "advertisers"
  ]
}

Get ad transcript

POST /v1/ads/transcript

Get the spoken transcript for one public Meta video ad URL. Best for: Reading, summarizing, or analyzing spoken advertising creative from a known Meta or Facebook ad. Returns: Availability status, source and media URLs, transcript text, language, and the normalized public source record. Query tips: Pass the exact Meta or Facebook ad-library URL. A successful not_available result means no transcript was found.

Input schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Exact public Meta, TikTok, Google, or LinkedIn ad-library URL over HTTPS."
    }
  },
  "required": [
    "url"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "meta",
        "tiktok",
        "google",
        "linkedin"
      ],
      "description": "Public ad library: Meta, TikTok, Google, or LinkedIn."
    },
    "transcript": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "available",
            "not_available"
          ]
        },
        "source_url": {
          "type": "string",
          "format": "uri"
        },
        "media_url": {
          "type": "string",
          "format": "uri"
        },
        "transcript": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "source_data": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      },
      "required": [
        "status",
        "source_url",
        "media_url",
        "source_data"
      ]
    }
  },
  "required": [
    "platform",
    "transcript"
  ]
}

Commerce

Search commerce

POST /v1/commerce/search

Search public commerce products by name, category, feature, or shopping need. Best for: Product discovery, assortment research, pricing research, and finding TikTok Shop listings when no exact URL is known. Returns: Available product title, URL, image, price, currency, rating, review count, source record, and an opaque next-page cursor. Query tips: Describe the desired product in natural language. Use region 'US' unless another supported market is required. Next: Use commerce_product on a selected URL for exact product detail. Use commerce_reviews for customer feedback.

Input schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "tiktok",
        "amazon"
      ],
      "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Product name, category, feature, or shopping need to find, such as 'women's trail running shoes'."
    },
    "region": {
      "default": "US",
      "description": "Market or country code used by the platform (default 'US'). Availability varies by platform and tool.",
      "type": "string",
      "minLength": 2,
      "maxLength": 8
    },
    "limit": {
      "default": 20,
      "description": "Maximum records to return (1-50, default 20). Reuse the returned cursor for the next page.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    }
  },
  "required": [
    "platform",
    "query"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "tiktok",
        "amazon"
      ],
      "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
    },
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "platform": {
            "type": "string",
            "enum": [
              "tiktok",
              "amazon"
            ],
            "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "image_url": {
            "type": "string",
            "format": "uri"
          },
          "price": {
            "type": "number",
            "minimum": 0
          },
          "currency": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3
          },
          "rating": {
            "type": "number",
            "minimum": 0,
            "maximum": 5
          },
          "review_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "source_data": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "id",
          "platform",
          "source_url",
          "title",
          "source_data"
        ]
      }
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    },
    "has_more": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "platform",
    "products"
  ]
}

Get shop products

POST /v1/commerce/shop

List products from one exact public TikTok shop or seller storefront URL. Best for: Reviewing a known seller's assortment, prices, ratings, and product links. Returns: Available product titles, URLs, images, prices, currencies, ratings, review counts, source records, and an opaque next-page cursor. Query tips: Pass the exact public TikTok shop or seller URL and reuse the returned cursor with unchanged inputs for the next page. Next: Use commerce_product on a selected product URL for exact detail. Use commerce_reviews for customer feedback.

Input schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "tiktok",
        "amazon"
      ],
      "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Exact public TikTok shop or seller storefront URL over HTTPS."
    },
    "region": {
      "default": "US",
      "description": "Market or country code used by the platform (default 'US'). Availability varies by platform and tool.",
      "type": "string",
      "minLength": 2,
      "maxLength": 8
    },
    "limit": {
      "default": 20,
      "description": "Maximum records to return (1-50, default 20). Reuse the returned cursor for the next page.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    }
  },
  "required": [
    "platform",
    "url"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "tiktok",
        "amazon"
      ],
      "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
    },
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "platform": {
            "type": "string",
            "enum": [
              "tiktok",
              "amazon"
            ],
            "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "image_url": {
            "type": "string",
            "format": "uri"
          },
          "price": {
            "type": "number",
            "minimum": 0
          },
          "currency": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3
          },
          "rating": {
            "type": "number",
            "minimum": 0,
            "maximum": 5
          },
          "review_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "source_data": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "id",
          "platform",
          "source_url",
          "title",
          "source_data"
        ]
      }
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    },
    "has_more": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "platform",
    "products"
  ]
}

Get product

POST /v1/commerce/product

Retrieve one exact public commerce product from its URL. Best for: Inspecting a known product after commerce_search, commerce_shop, or commerce_creator_shop. Returns: Available product title, source URL, image, price, currency, rating, review count, and the normalized public source record. Query tips: Pass the exact public product-detail URL. TikTok product detail currently requires region 'US'. Next: Use commerce_reviews on the same product URL for customer ratings and review text.

Input schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "tiktok",
        "amazon"
      ],
      "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Exact public product-detail URL over HTTPS. TikTok product detail currently requires region 'US'."
    },
    "region": {
      "default": "US",
      "description": "Market or country code used by the platform (default 'US'). Availability varies by platform and tool.",
      "type": "string",
      "minLength": 2,
      "maxLength": 8
    }
  },
  "required": [
    "platform",
    "url"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "product": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1
        },
        "platform": {
          "type": "string",
          "enum": [
            "tiktok",
            "amazon"
          ],
          "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
        },
        "source_url": {
          "type": "string",
          "format": "uri"
        },
        "title": {
          "type": "string",
          "minLength": 1
        },
        "image_url": {
          "type": "string",
          "format": "uri"
        },
        "price": {
          "type": "number",
          "minimum": 0
        },
        "currency": {
          "type": "string",
          "minLength": 3,
          "maxLength": 3
        },
        "rating": {
          "type": "number",
          "minimum": 0,
          "maximum": 5
        },
        "review_count": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "source_data": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      },
      "required": [
        "id",
        "platform",
        "source_url",
        "title",
        "source_data"
      ]
    }
  },
  "required": [
    "product"
  ]
}

Get product reviews

POST /v1/commerce/reviews

List public customer ratings and review text for one exact product URL. Best for: Product feedback, sentiment, complaints, purchase research, and evidence from public review pages. Returns: Review text, rating, author, date, source record, and an opaque next-page cursor when available. Query tips: Pass the exact product-detail URL and reuse the returned cursor with unchanged inputs for the next page.

Input schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "tiktok",
        "amazon"
      ],
      "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Exact public product-detail URL whose customer reviews should be listed."
    },
    "region": {
      "default": "US",
      "description": "Market or country code used by the platform (default 'US'). Availability varies by platform and tool.",
      "type": "string",
      "minLength": 2,
      "maxLength": 8
    },
    "limit": {
      "default": 20,
      "description": "Maximum records to return (1-50, default 20). Reuse the returned cursor for the next page.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    }
  },
  "required": [
    "platform",
    "url"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "tiktok",
        "amazon"
      ],
      "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
    },
    "product_url": {
      "type": "string",
      "format": "uri"
    },
    "reviews": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "text": {
            "default": "",
            "type": "string"
          },
          "rating": {
            "type": "number",
            "minimum": 0,
            "maximum": 5
          },
          "author_name": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "source_data": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "id",
          "source_data"
        ]
      }
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    },
    "has_more": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "platform",
    "product_url",
    "reviews"
  ]
}

Get creator shop

POST /v1/commerce/creator_shop

List products from one TikTok creator showcase or Amazon influencer storefront. Best for: Creator commerce, affiliate assortment, sponsorship research, and reviewing products promoted by a known creator. Returns: Available product titles, URLs, images, prices, currencies, ratings, review counts, source records, and an opaque next-page cursor. Query tips: Provide a public storefront URL. A TikTok creator handle without '@' also works when no URL is available. Next: Use commerce_product on a selected TikTok product URL for exact detail.

Input schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "tiktok",
        "amazon"
      ],
      "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
    },
    "url": {
      "description": "Public TikTok creator showcase or Amazon influencer storefront URL. Provide this or handle.",
      "type": "string",
      "format": "uri"
    },
    "handle": {
      "description": "TikTok creator username, with or without '@'. Provide this or url.",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "region": {
      "default": "US",
      "description": "Market or country code used by the platform (default 'US'). Availability varies by platform and tool.",
      "type": "string",
      "minLength": 2,
      "maxLength": 8
    },
    "limit": {
      "default": 20,
      "description": "Maximum records to return (1-50, default 20). Reuse the returned cursor for the next page.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    }
  },
  "required": [
    "platform"
  ]
}
Result schema
{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "tiktok",
        "amazon"
      ],
      "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
    },
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "platform": {
            "type": "string",
            "enum": [
              "tiktok",
              "amazon"
            ],
            "description": "Commerce platform. TikTok supports all commerce tools; Amazon supports commerce_creator_shop only."
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "image_url": {
            "type": "string",
            "format": "uri"
          },
          "price": {
            "type": "number",
            "minimum": 0
          },
          "currency": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3
          },
          "rating": {
            "type": "number",
            "minimum": 0,
            "maximum": 5
          },
          "review_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "source_data": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "id",
          "platform",
          "source_url",
          "title",
          "source_data"
        ]
      }
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "Opaque cursor from the previous response. Reuse it only with the same tool and unchanged filters."
    },
    "has_more": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "platform",
    "products"
  ]
}