PeekPanda markpeekpandaDocumentationFor AI ↗Open app

PeekPanda docs

Search organic content

Search the copied public organic corpus with bounded filters.

Download Markdown ↓
GET/v1/organic
Auth Bearer API credential or OAuth access tokenScope context:readMCP search_organic_content

Request

Send filters as query parameters. This read serves stored corpus rows and does not scrape TikTok.

curl --get 'https://api.peekpanda.com/v1/organic' \
  --header "Authorization: Bearer $PEEKPANDA_TOKEN" \
  --header 'x-genviral-tenancy: personal' \
  --data-urlencode 'q=meal planner' \
  --data-urlencode 'platform=tiktok' \
  --data-urlencode 'limit=12'

Response

posts is a page of organic corpus rows. product_app is null when no catalogue app was matched; product_app.matchedBy = product_name means a conservative inferred association, not verified ownership. slide_texts is null on list results. relevance is always null. next_offset is null on the last page or when the offset cap is reached.

{
  "posts": [
    {
      "id": "organic-post-example",
      "platform": "tiktok",
      "content_type": "slideshow",
      "link": "https://www.tiktok.com/@example/video/1",
      "category": "Food & Cooking",
      "business_type": "app",
      "product_name": "Example Meal Planner",
      "product_website": "https://example.com",
      "product_app": {
        "platform": "ios",
        "storeId": "6480417616",
        "appName": "Example Meal Planner",
        "iconUrl": "https://is1-ssl.mzstatic.com/example-meal-planner.jpg",
        "matchedBy": "product_name"
      },
      "account": "example",
      "caption": "five dinners in ten minutes",
      "hashtags": [
        "#cooking",
        "#mealprep"
      ],
      "date_published": "2026-04-02",
      "metrics": {
        "views": 412000,
        "likes": 31000,
        "comments": 480,
        "shares": 210,
        "bookmarks": 9400
      },
      "slide_count": 7,
      "preview_image_url": "https://cdn.example.com/preview.jpg",
      "image_urls": [
        "https://cdn.example.com/preview.jpg"
      ],
      "video_url": null,
      "hook_text": "I stopped meal planning and did this instead",
      "hook_analysis": {
        "content_class": "listicle_hook",
        "format_template": "I stopped X and did Y",
        "psychology_tags": [
          "curiosity",
          "relief"
        ]
      },
      "search_summary": "A slideshow about weeknight cooking for a meal-planning app.",
      "niche": "meal planning",
      "topics": [
        "cooking",
        "meal prep"
      ],
      "search_keywords": [
        "dinner ideas",
        "meal planner app"
      ],
      "slide_texts": null,
      "relevance": null
    }
  ],
  "total": 1,
  "has_more": false,
  "next_offset": null
}

Parameters

NameInTypeRequiredDescription
qquerystring, 1–200NoFree-text search.
categoryqueryHealth & Wellness | Personal Development | Relationships & Lifestyle | Arts, Hobbies & Entertainment | Education & Knowledge | Fashion & Beauty | Spirituality & Beliefs | Business & Finance | Travel | Food & Cooking | Home & Design | Fitness | Technology | Gaming & Esports | Productivity & OrganizationNoExact organic corpus category.
business_typequeryapp | ecommerce | saas | service | affiliate | other | creator | game | book | unclassifiedNoExact business-type filter.
platformquerytiktok | instagram | threadsNoOrganic platform filter.
content_typequeryslideshow | video | mixedNoContent-type filter.
accountquerystring, 1–200NoCreator account filter.
productquerystring, 1–200NoProduct-name filter.
max_slidesqueryinteger, 1–100NoMaximum slide count.
published_sincequerydate, YYYY-MM-DDNoInclusive calendar start date.
published_untilquerydate, YYYY-MM-DDNoInclusive calendar end date; must be at or after published_since.
sortqueryrelevance | newest | latest_posted | most_views | most_likes | most_comments | most_slidesNoDefaults to relevance when q is set and newest otherwise.
limitqueryinteger, 1–40NoPage size; defaults to 12. offset + limit cannot exceed 1000.
offsetqueryinteger, 0–960NoResult offset; defaults to 0.

Known errors

400invalid_request for an invalid filter, identity or limit.
401authentication_required for a missing or invalid credential.
402subscription_required when access is not entitled.
403authorization_required for a missing scope or unavailable preview access.
404not_found when the record is outside the accessible catalogue.
429rate_limited; honor Retry-After when present.

Source

Copied public organic corpus with original source IDs. Not a live TikTok scrape on GET.

Refresh

The corpus copy is a separate import. This GET is a stored read.