Api Endpoint

Particle Pro

List and search podcasts. Returns a paginated list of podcasts, with filters for topic, language, suitability tier, popularity, and format.

Open interactive test console

Offering

Provider
api.particle.pro
Method
GET
Offering type
Api Endpoint
Transport type
http
Category
Web Search Research
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://api.particle.pro/v1/podcasts
MIME type
application/json
First seen
2026-10-16T01:54:22.818Z
Last seen
Tags
podcasts, media intelligence, particle pro

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.01 USDC
Atomic price: 10000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "10000",
    "payTo": "0x59f3a6dcb6f482c53872dd8f8f9e1f9161a1c5f7"
  }
]

Observed health

Status
Healthy
Latest latency
83 ms
Average latency
251 ms
HTTP status
402
Last checked
Reachability
100% over 14 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "additionalProperties": false,
  "properties": {
    "method": {
      "enum": [
        "GET"
      ],
      "type": "string"
    },
    "queryParams": {
      "properties": {
        "cursor": {
          "description": "Opaque pagination cursor from previous response",
          "type": "string"
        },
        "format_signal": {
          "description": "Filter by detected production format. Pass a comma-separated list to match any of several formats — e.g. panel,call_in. Values mirror the format.signals field on podcast responses; a show can carry several signals.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "guest_field": {
          "description": "Only shows whose analyzed guests include someone listed under this ANZSRC 2020 field of research (code, slug, or title).",
          "type": "string"
        },
        "guest_frequency": {
          "description": "Filter by how often episodes feature a guest. Pass a comma-separated list to match any of several buckets — e.g. regular,always for interview-driven shows, or never for shows that don't host guests. Only matches podcasts with enough analyzed episodes to judge; values mirror the format.guest_frequency field on podcast responses.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "guest_occupation": {
          "description": "Only shows whose analyzed guests include someone listed under this SOC 2018 or ISCO-08 occupation (code, slug, or title), including a SOC group or everyday name such as physicians or doctors. A word with no occupation that names a field of research, such as oncologists, filters by the field; one that names a capacity, such as founders, is rejected.",
          "type": "string"
        },
        "has_ads": {
          "description": "Filter by advertiser presence. Pass false to find ad-free shows — an assertion that requires the show to have enough analyzed episodes, so sparsely-analyzed podcasts are excluded rather than presumed ad-free.",
          "enum": [
            "true",
            "false"
          ],
          "type": "string"
        },
        "has_video": {
          "description": "Filter by whether episodes have discovered video versions (e.g. YouTube releases).",
          "enum": [
            "true",
            "false"
          ],
          "type": "string"
        },
        "language": {
          "description": "Filter by the podcast's language (ISO 639-1 code, e.g. 'en', 'fr'). Matches the primary language subtag, so 'fr' covers 'fr-FR'.",
          "type": "string"
        },
        "limit": {
          "description": "Results per page",
          "format": "int64",
          "type": "integer"
        },
        "max_avg_episode_minutes": {
          "description": "Only podcasts whose average episode runs at most this many minutes.",
          "format": "int64",
          "type": "integer"
        },
        "max_episodes_per_week": {
          "description": "Only podcasts publishing at most this many episodes per week on average (e.g. 0.5 for fortnightly-or-slower shows).",
          "format": "double",
          "type": "number"
        },
        "max_promotional_guest_share": {
          "description": "Only shows where at most this share of analyzed guest appearances were mainly promotional (0-1); 0 keeps only shows with none.",
          "type": "number"
        },
        "min_analyzed_guest_appearances": {
          "description": "Only shows with at least this many guest appearances analyzed for expertise. Raise it to steady the share filters below on shows with few analyzed guests.",
          "format": "int64",
          "type": "integer"
        },
        "min_avg_episode_minutes": {
          "description": "Only podcasts whose average episode runs at least this many minutes. Combine with max_avg_episode_minutes to target a length band (e.g. 20–40 minute commute shows).",
          "format": "int64",
          "type": "integer"
        },
        "min_episodes_per_week": {
          "description": "Only podcasts publishing at least this many episodes per week on average (e.g. 5 for weekday dailies). Cadence is measured over the trailing 90 days; podcasts tracked too briefly to measure are excluded.",
          "format": "double",
          "type": "number"
        },
        "min_established_guest_share": {
          "description": "Only shows where at least this share of analyzed guest appearances are by guests whose standing others conferred (0-1; 0 sets no bound).",
          "format": "double",
          "type": "number"
        },
        "min_in_field_guest_share": {
          "description": "Only shows where at least this share of analyzed guest appearances stayed within the guest's field (0-1; 0 sets no bound).",
          "format": "double",
          "type": "number"
        },
        "popularity_threshold": {
          "description": "Restrict results to podcasts whose global popularity percentile is at least this value (accepted range [0,1]). Omitting the parameter or passing 0 disables the filter; only a value greater than 0 activates it. Popularity is always global — a cume_dist ranking over all currently-charting podcasts (Apple Podcasts) — never scoped to topic_id or any other filter. When the filter is active (threshold > 0), podcasts not currently charting have no percentile and are excluded, so a high threshold combined with a narrow topic_id may return zero results; lower or remove the threshold to widen the set.",
          "format": "double",
          "type": "number"
        },
        "publishing_status": {
          "description": "Filter by publishing activity: active shows have released an episode within the last 90 days; dormant shows have not.",
          "enum": [
            "active",
            "dormant"
          ],
          "type": "string"
        },
        "q": {
          "description": "Search the catalog by podcast name. GET /v1/podcasts/search is the canonical search endpoint and accepts the same parameters. The search is forgiving: it handles typos, missing or extra words ('offline jon favreau' finds Offline with Jon Favreau), a name plus qualifiers ('equity techcrunch'), and pasted episode titles ('Ferrari | Acquired' finds Acquired). The best matches come first, and each result's match_quality tells you how confident the match is — including when a show matched only through its description (match_quality=description) rather than its name.",
          "type": "string"
        },
        "slug": {
          "description": "Filter by exact podcast slug (e.g., 'all-in'). Slugs are stable, human-readable identifiers returned on every podcast object.",
          "type": "string"
        },
        "sort": {
          "description": "Result ordering. relevance — the default whenever q is present — ranks by how well each podcast matches the query, breaking ties by popularity. popularity orders purely by the global popularity percentile (most popular first; podcasts not currently charting sort last), and also overrides topic_id's concentration ordering. Without q or topic_id, results are popularity-ordered either way.",
          "enum": [
            "relevance",
            "popularity"
          ],
          "type": "string"
        },
        "suitability_tier": {
          "description": "Filter by brand-suitability tier (IAB Tech Lab Brand Safety & Suitability Framework, formerly GARM). Only returns podcasts whose most recent suitability analysis assigned this tier. Podcasts without a suitability analysis are excluded when this filter is set.",
          "enum": [
            "SAFE",
            "LIMITED",
            "SENSITIVE",
            "UNSAFE"
          ],
          "type": "string"
        },
        "topic_id": {
          "description": "Filter by topic ID, ancestry slug (e.g., technology/artificial-intelligence), or ancestry path hash. Matches podcasts where the topic accounts for at least 20% of the show's episodes, ranked by topic concentration — not merely podcasts that mention it once.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "type": {
      "const": "http",
      "type": "string"
    }
  },
  "required": [
    "type",
    "method"
  ],
  "type": "object"
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "method": {
          "enum": [
            "GET"
          ],
          "type": "string"
        },
        "queryParams": {
          "properties": {
            "cursor": {
              "description": "Opaque pagination cursor from previous response",
              "type": "string"
            },
            "format_signal": {
              "description": "Filter by detected production format. Pass a comma-separated list to match any of several formats — e.g. panel,call_in. Values mirror the format.signals field on podcast responses; a show can carry several signals.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "guest_field": {
              "description": "Only shows whose analyzed guests include someone listed under this ANZSRC 2020 field of research (code, slug, or title).",
              "type": "string"
            },
            "guest_frequency": {
              "description": "Filter by how often episodes feature a guest. Pass a comma-separated list to match any of several buckets — e.g. regular,always for interview-driven shows, or never for shows that don't host guests. Only matches podcasts with enough analyzed episodes to judge; values mirror the format.guest_frequency field on podcast responses.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "guest_occupation": {
              "description": "Only shows whose analyzed guests include someone listed under this SOC 2018 or ISCO-08 occupation (code, slug, or title), including a SOC group or everyday name such as physicians or doctors. A word with no occupation that names a field of research, such as oncologists, filters by the field; one that names a capacity, such as founders, is rejected.",
              "type": "string"
            },
            "has_ads": {
              "description": "Filter by advertiser presence. Pass false to find ad-free shows — an assertion that requires the show to have enough analyzed episodes, so sparsely-analyzed podcasts are excluded rather than presumed ad-free.",
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            },
            "has_video": {
              "description": "Filter by whether episodes have discovered video versions (e.g. YouTube releases).",
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            },
            "language": {
              "description": "Filter by the podcast's language (ISO 639-1 code, e.g. 'en', 'fr'). Matches the primary language subtag, so 'fr' covers 'fr-FR'.",
              "type": "string"
            },
            "limit": {
              "description": "Results per page",
              "format": "int64",
              "type": "integer"
            },
            "max_avg_episode_minutes": {
              "description": "Only podcasts whose average episode runs at most this many minutes.",
              "format": "int64",
              "type": "integer"
            },
            "max_episodes_per_week": {
              "description": "Only podcasts publishing at most this many episodes per week on average (e.g. 0.5 for fortnightly-or-slower shows).",
              "format": "double",
              "type": "number"
            },
            "max_promotional_guest_share": {
              "description": "Only shows where at most this share of analyzed guest appearances were mainly promotional (0-1); 0 keeps only shows with none.",
              "type": "number"
            },
            "min_analyzed_guest_appearances": {
              "description": "Only shows with at least this many guest appearances analyzed for expertise. Raise it to steady the share filters below on shows with few analyzed guests.",
              "format": "int64",
              "type": "integer"
            },
            "min_avg_episode_minutes": {
              "description": "Only podcasts whose average episode runs at least this many minutes. Combine with max_avg_episode_minutes to target a length band (e.g. 20–40 minute commute shows).",
              "format": "int64",
              "type": "integer"
            },
            "min_episodes_per_week": {
              "description": "Only podcasts publishing at least this many episodes per week on average (e.g. 5 for weekday dailies). Cadence is measured over the trailing 90 days; podcasts tracked too briefly to measure are excluded.",
              "format": "double",
              "type": "number"
            },
            "min_established_guest_share": {
              "description": "Only shows where at least this share of analyzed guest appearances are by guests whose standing others conferred (0-1; 0 sets no bound).",
              "format": "double",
              "type": "number"
            },
            "min_in_field_guest_share": {
              "description": "Only shows where at least this share of analyzed guest appearances stayed within the guest's field (0-1; 0 sets no bound).",
              "format": "double",
              "type": "number"
            },
            "popularity_threshold": {
              "description": "Restrict results to podcasts whose global popularity percentile is at least this value (accepted range [0,1]). Omitting the parameter or passing 0 disables the filter; only a value greater than 0 activates it. Popularity is always global — a cume_dist ranking over all currently-charting podcasts (Apple Podcasts) — never scoped to topic_id or any other filter. When the filter is active (threshold > 0), podcasts not currently charting have no percentile and are excluded, so a high threshold combined with a narrow topic_id may return zero results; lower or remove the threshold to widen the set.",
              "format": "double",
              "type": "number"
            },
            "publishing_status": {
              "description": "Filter by publishing activity: active shows have released an episode within the last 90 days; dormant shows have not.",
              "enum": [
                "active",
                "dormant"
              ],
              "type": "string"
            },
            "q": {
              "description": "Search the catalog by podcast name. GET /v1/podcasts/search is the canonical search endpoint and accepts the same parameters. The search is forgiving: it handles typos, missing or extra words ('offline jon favreau' finds Offline with Jon Favreau), a name plus qualifiers ('equity techcrunch'), and pasted episode titles ('Ferrari | Acquired' finds Acquired). The best matches come first, and each result's match_quality tells you how confident the match is — including when a show matched only through its description (match_quality=description) rather than its name.",
              "type": "string"
            },
            "slug": {
              "description": "Filter by exact podcast slug (e.g., 'all-in'). Slugs are stable, human-readable identifiers returned on every podcast object.",
              "type": "string"
            },
            "sort": {
              "description": "Result ordering. relevance — the default whenever q is present — ranks by how well each podcast matches the query, breaking ties by popularity. popularity orders purely by the global popularity percentile (most popular first; podcasts not currently charting sort last), and also overrides topic_id's concentration ordering. Without q or topic_id, results are popularity-ordered either way.",
              "enum": [
                "relevance",
                "popularity"
              ],
              "type": "string"
            },
            "suitability_tier": {
              "description": "Filter by brand-suitability tier (IAB Tech Lab Brand Safety & Suitability Framework, formerly GARM). Only returns podcasts whose most recent suitability analysis assigned this tier. Podcasts without a suitability analysis are excluded when this filter is set.",
              "enum": [
                "SAFE",
                "LIMITED",
                "SENSITIVE",
                "UNSAFE"
              ],
              "type": "string"
            },
            "topic_id": {
              "description": "Filter by topic ID, ancestry slug (e.g., technology/artificial-intelligence), or ancestry path hash. Matches podcasts where the topic accounts for at least 20% of the show's episodes, ranked by topic concentration — not merely podcasts that mention it once.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}