PeekPanda markpeekpandaDocumentationFor AI ↗Open app

PeekPanda docs

Browse paid-ad shelves

Read paid ads as per-advertiser shelves, plus shelves for newly launched and long-running creatives.

Download Markdown ↓
GET/v1/paid-ads/rails
Auth Bearer API credential or OAuth access tokenScope context:readMCP get_ads action rails

Request

Every filter is optional. This read serves stored ads and does not collect new ones.

curl --get 'https://api.peekpanda.com/v1/paid-ads/rails' \
  --header "Authorization: Bearer $PEEKPANDA_TOKEN" \
  --header 'x-genviral-tenancy: personal'

Response

rails is empty when nothing is stored. totals uses the same counts as the ranking read.

{
  "generatedAt": "2026-09-06T00:00:00.000Z",
  "rails": [],
  "totals": {
    "ads": 0,
    "liveAds": 0,
    "advertisers": 0,
    "liveAdvertisers": 0,
    "newAdsLast7Days": 0,
    "advertisersShippingLast7Days": 0,
    "medianRunDays": null,
    "longestRunDays": null,
    "liveBeyond60Days": 0,
    "reachDisclosedAds": 0,
    "unlinkedAds": 0
  }
}

MCP request

Call get_ads with action rails. Path fields go in params, filters in query, and a write body in body.

{
  "name": "get_ads",
  "arguments": {
    "request": {
      "action": "rails"
    }
  }
}

Parameters

NameInTypeRequiredDescription
categoryquerycategoryNoLimit shelves to one category.
platformquerymeta | tiktokNoAdvertising platform.
searchquerystring, max 120NoAdvertiser or creative text.
sortquerymost_tested | longest_running | most_live | recently_trackedNoOrder of the advertiser shelves. Defaults to most_tested.
railSizequeryinteger, 4-20NoCreatives on each shelf. Defaults to 10.
advertiserLimitqueryinteger, 1-20NoAdvertiser shelves to return. Defaults to 8.

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

Stored paid-ad observations. Rankings count creatives and how long they stay live. There is no spend or impression field.

Refresh

These reads do not collect new ads.