100 free credits. No credit card required.Start building
Logo
Polymarket logo
100 free credits. No credit card required

Polymarket Research API

Returns Polymarket prediction markets about a topic, ranked by how well they match: event title, market questions, outcome prices, volume, and end date.

GET /v1/polymarket/research

Last updated November 2026Maintained by the SocialCrawl team

When to use the Polymarket Research API

Use it to get a focused feed of markets on a subject. It runs several searches for you and drops results that are not about the topic.

From the API reference

Server-side fan-out over the Gamma API: expands the topic into up to 6 search queries (core subject + individual informative words), issues all calls in parallel, dedupes events by id, filters out unrelated matches via informative-word overlap with the topic, and ranks the remainder by topic↔title similarity. Costs 5 credits because each call hits upstream multiple times. Use this when you want a curated, on-topic feed; use /v1/polymarket/search for raw single-query lookups.

Searching 69 platforms in parallel

·TikTok logoTikTok·Instagram logoInstagram·YouTube logoYouTube·Facebook logoFacebook·X logoX·LinkedIn logoLinkedIn·Reddit logoReddit·Threads logoThreads·Pinterest logoPinterest·Twitch logoTwitch·Truth Social logoTruth Social·Snapchat logoSnapchat·Kick logoKick·Bluesky logoBluesky·Kwai logoKwai·Rumble logoRumble·Spotify logoSpotify·Apple Music logoApple Music·TikTok Shop logoTikTok Shop·Amazon Shop logoAmazon Shop·Google Shopping logoGoogle Shopping·Trustpilot logoTrustpilot·TripAdvisor logoTripAdvisor·Yelp logoYelp·Linktree logoLinktree·Komi logoKomi·Pillar logoPillar·lnk.bio logolnk.bio·Facebook Ads logoFacebook Ads·Google Ads logoGoogle Ads·LinkedIn Ads logoLinkedIn Ads·Google Search logoGoogle Search·Google News logoGoogle News·Finance logoFinance·Polymarket logoPolymarket·Tavily logoTavily·Hacker News logoHacker News·GitHub logoGitHub·Perplexity logoPerplexity·Naver logoNaver·Utility logoUtility·Universal Search logoUniversal Search
·TikTok logoTikTok·Instagram logoInstagram·YouTube logoYouTube·Facebook logoFacebook·X logoX·LinkedIn logoLinkedIn·Reddit logoReddit·Threads logoThreads·Pinterest logoPinterest·Twitch logoTwitch·Truth Social logoTruth Social·Snapchat logoSnapchat·Kick logoKick·Bluesky logoBluesky·Kwai logoKwai·Rumble logoRumble·Spotify logoSpotify·Apple Music logoApple Music·TikTok Shop logoTikTok Shop·Amazon Shop logoAmazon Shop·Google Shopping logoGoogle Shopping·Trustpilot logoTrustpilot·TripAdvisor logoTripAdvisor·Yelp logoYelp·Linktree logoLinktree·Komi logoKomi·Pillar logoPillar·lnk.bio logolnk.bio·Facebook Ads logoFacebook Ads·Google Ads logoGoogle Ads·LinkedIn Ads logoLinkedIn Ads·Google Search logoGoogle Search·Google News logoGoogle News·Finance logoFinance·Polymarket logoPolymarket·Tavily logoTavily·Hacker News logoHacker News·GitHub logoGitHub·Perplexity logoPerplexity·Naver logoNaver·Utility logoUtility·Universal Search logoUniversal Search
·TikTok logoTikTok·Instagram logoInstagram·YouTube logoYouTube·Facebook logoFacebook·X logoX·LinkedIn logoLinkedIn·Reddit logoReddit·Threads logoThreads·Pinterest logoPinterest·Twitch logoTwitch·Truth Social logoTruth Social·Snapchat logoSnapchat·Kick logoKick·Bluesky logoBluesky·Kwai logoKwai·Rumble logoRumble·Spotify logoSpotify·Apple Music logoApple Music·TikTok Shop logoTikTok Shop·Amazon Shop logoAmazon Shop·Google Shopping logoGoogle Shopping·Trustpilot logoTrustpilot·TripAdvisor logoTripAdvisor·Yelp logoYelp·Linktree logoLinktree·Komi logoKomi·Pillar logoPillar·lnk.bio logolnk.bio·Facebook Ads logoFacebook Ads·Google Ads logoGoogle Ads·LinkedIn Ads logoLinkedIn Ads·Google Search logoGoogle Search·Google News logoGoogle News·Finance logoFinance·Polymarket logoPolymarket·Tavily logoTavily·Hacker News logoHacker News·GitHub logoGitHub·Perplexity logoPerplexity·Naver logoNaver·Utility logoUtility·Universal Search logoUniversal Search
·TikTok logoTikTok·Instagram logoInstagram·YouTube logoYouTube·Facebook logoFacebook·X logoX·LinkedIn logoLinkedIn·Reddit logoReddit·Threads logoThreads·Pinterest logoPinterest·Twitch logoTwitch·Truth Social logoTruth Social·Snapchat logoSnapchat·Kick logoKick·Bluesky logoBluesky·Kwai logoKwai·Rumble logoRumble·Spotify logoSpotify·Apple Music logoApple Music·TikTok Shop logoTikTok Shop·Amazon Shop logoAmazon Shop·Google Shopping logoGoogle Shopping·Trustpilot logoTrustpilot·TripAdvisor logoTripAdvisor·Yelp logoYelp·Linktree logoLinktree·Komi logoKomi·Pillar logoPillar·lnk.bio logolnk.bio·Facebook Ads logoFacebook Ads·Google Ads logoGoogle Ads·LinkedIn Ads logoLinkedIn Ads·Google Search logoGoogle Search·Google News logoGoogle News·Finance logoFinance·Polymarket logoPolymarket·Tavily logoTavily·Hacker News logoHacker News·GitHub logoGitHub·Perplexity logoPerplexity·Naver logoNaver·Utility logoUtility·Universal Search logoUniversal Search
Polymarket API

What can you do with the Research API?

The Research endpoint gives you structured Polymarket data with computed fields in a single request. No scraping infrastructure to build or maintain.

Example Request

# GET /v1/polymarket/research: 5 credits per call. Cache hits are free and failed calls are refunded.
# Check the price first for 0 credits: add dry_run=1 to the query. Nothing is fetched or charged.
# --max-time 60: the API's own time limit for this endpoint.
# --retry 3: retries timeouts, 429 and 5xx, honoring Retry-After.
# -o response.json keeps only the final attempt's body.
# One Idempotency-Key per request, reused on every retry, so a retried call is never charged twice.
IDEMPOTENCY_KEY=$(od -An -N16 -tx1 /dev/urandom | tr -d ' \n')
curl -sS --max-time 60 --retry 3 -o response.json \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  "https://www.socialcrawl.dev/v1/polymarket/research?query=trump+2028+election" && cat response.json
# GET /v1/polymarket/research: 5 credits per call. Cache hits are free and failed calls are refunded.
# Check the price first for 0 credits: add dry_run=1 to the query. Nothing is fetched or charged.
import os
import random
import time
import uuid

import requests

API_KEY = os.environ.get("SOCIALCRAWL_API_KEY", "YOUR_API_KEY")
TIMEOUT_S = 60  # the API's own time limit for this endpoint.
MAX_RETRIES = 3
URL = "https://www.socialcrawl.dev/v1/polymarket/research"


def backoff(attempt):
    # Exponential backoff with jitter: about 1 s, 2 s, then 4 s.
    return 2 ** attempt * (0.5 + random.random() / 2)


def socialcrawl(params):
    # One Idempotency-Key per request, reused on every retry, so a retried call is never charged twice.
    idempotency_key = str(uuid.uuid4())
    for attempt in range(MAX_RETRIES + 1):
        try:
            res = requests.get(
                URL,
                params=params,
                headers={"x-api-key": API_KEY, "Idempotency-Key": idempotency_key},
                timeout=TIMEOUT_S,
            )
            body = res.json()
        except (requests.RequestException, ValueError):
            # A timeout, a dropped connection or a non-JSON gateway page: retry with the same key.
            if attempt == MAX_RETRIES:
                raise
            time.sleep(backoff(attempt))
            continue
        if body["success"]:
            return body
        error = body["error"]
        # Branch on error["type"], never on the message text.
        if error["type"] == "RESOURCE_NOT_FOUND":
            return None  # refunded: nothing to read
        retry_after = res.headers.get("Retry-After")
        # SERVICE_UNAVAILABLE without Retry-After is a withdrawn endpoint: permanent.
        permanent = error["type"] == "SERVICE_UNAVAILABLE" and retry_after is None
        if not error.get("retryable") or permanent or attempt == MAX_RETRIES:
            raise RuntimeError(f"{error['type']}: {error['message']} (request_id {body['request_id']})")
        # Retry-After (seconds) wins; otherwise back off.
        time.sleep(float(retry_after) if retry_after else backoff(attempt))


params = {
    "query": "trump 2028 election",
}
body = socialcrawl(params)
if body is not None:
    print(body["data"])
// GET /v1/polymarket/research: 5 credits per call. Cache hits are free and failed calls are refunded.
// Check the price first for 0 credits: add dry_run=1 to the query. Nothing is fetched or charged.
const API_KEY = process.env.SOCIALCRAWL_API_KEY ?? "YOUR_API_KEY";
const TIMEOUT_MS = 60_000; // the API's own time limit for this endpoint.
const MAX_RETRIES = 3;

type Page = { next_cursor: string | null; has_more: boolean };
type SocialCrawlResponse =
  | { success: true; data: any; pagination?: Page; credits_used: number; request_id: string }
  | { success: false; error: { type: string; message: string; retryable: boolean }; request_id: string };

const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
// Exponential backoff with jitter: about 1 s, 2 s, then 4 s.
const backoffMs = (attempt: number) => 2 ** attempt * 1000 * (0.5 + Math.random() / 2);

async function socialcrawl(url: URL) {
  // One Idempotency-Key per request, reused on every retry, so a retried call is never charged twice.
  const idempotencyKey = crypto.randomUUID();
  for (let attempt = 0; ; attempt++) {
    let res: Response;
    let body: SocialCrawlResponse;
    try {
      res = await fetch(url, {
        headers: {
          "x-api-key": API_KEY,
          "Idempotency-Key": idempotencyKey,
        },
        signal: AbortSignal.timeout(TIMEOUT_MS),
      });
      body = (await res.json()) as SocialCrawlResponse;
    } catch (error) {
      // A timeout, a dropped connection or a non-JSON gateway page: retry with the same key.
      if (attempt >= MAX_RETRIES) throw error;
      await sleep(backoffMs(attempt));
      continue;
    }
    if (body.success) return body;
    // Branch on error.type, never on the message text.
    if (body.error.type === "RESOURCE_NOT_FOUND") return null; // refunded: nothing to read
    const retryAfter = res.headers.get("Retry-After");
    // SERVICE_UNAVAILABLE without Retry-After is a withdrawn endpoint: permanent.
    const permanent = body.error.type === "SERVICE_UNAVAILABLE" && retryAfter === null;
    if (!body.error.retryable || permanent || attempt >= MAX_RETRIES) {
      throw new Error(`${body.error.type}: ${body.error.message} (request_id ${body.request_id})`);
    }
    // Retry-After (seconds) wins; otherwise back off.
    await sleep(retryAfter ? Number(retryAfter) * 1000 : backoffMs(attempt));
  }
}

const url = new URL("https://www.socialcrawl.dev/v1/polymarket/research");
url.searchParams.set("query", "trump 2028 election");

const body = await socialcrawl(url);
if (body) console.log(body.data);

Parameters

ParameterRequiredDescription
queryYesThe research topic: free-text natural language (e.g. 'last 30 days bitcoin halving', 'kanye west tour'). Framing prefixes like 'last N days' and 'what are people saying about' are stripped automatically before expansion.
limitNoMax results per result type on each fan-out call (events / markets / profiles). Bounds the response size. Defaults to 10.
Example Response

What does the Polymarket Research API return?

Every response follows one unified schema. Here is a real, unmodified response body, so you can see the exact fields you get back before spending a credit.

Example response
{
  "success": true,
  "platform": "polymarket",
  "endpoint": "/v1/polymarket/research",
  "data": {
    "items": [
      {
        "id": "773641",
        "ticker": "who-will-trump-endorse-first-in-the-2028-us-presidential-election-20260727202224755",
        "slug": "who-will-trump-endorse-first-in-the-2028-us-presidential-election-20260727202224755",
        "title": "Who will Trump endorse first in the 2028 US presidential election?",
        "description": "This market will resolve according to the first individual that Donald Trump endorses for President of the United States in the 2028 United States Presidential Election. \n\nAn endorsement is defined as a statement by Donald Trump that i) is made publicly (e.g., through a press release, an on-the-record interview, a speech, a campaign event, a post from a verified account on social media); ii) explicitly and unambiguously expresses unique support for an individual as a candidate for President of the United States in the 2028 United States Presidential election; and iii) is characterized by a consensus of credible reporting as an official endorsement by Donald Trump of the individual for President in the 2028 United States presidential election.\n\nAn endorsement of an individual for the Republican Party’s nomination to the 2028 United States Presidential election will qualify. Endorsements of a candidate for the Democratic Party's nomination without also endorsing that candidate for President in the general election will not qualify.\n\nThe following will not be considered endorsements: positive or favorable comments about a candidate without a clear public statement of direct support; conditional statements giving support only if certain conditions are met; statements equally expressing support for multiple candidates (e.g., “I support Marco and J.D.”); statements expressing opposition to a candidate without endorsing any candidate; private or non-public statements; and statements that are clearly sarcastic, made in jest, or immediately clarified as not reflecting genuine support.\n\nAn endorsement of a ticket comprising a presidential candidate and a vice-presidential candidate constitutes a qualifying endorsement only of the individual endorsed for President. If the endorsement is of a ticket with undefined presidential and vice-presidential roles, or the roles on an endorsed ticket cannot be determined by the statement itself or a consensus of credible reporting, no qualifying endorsement will be deemed to have occurred.\n\nIf Donald Trump issues multiple concurrent statements meeting this standard, directed at different individuals, this will not constitute a qualifying endorsement and this market will remain open and resolve based on the first standalone qualifying endorsement issued. Endorsements will be considered to be issued concurrently only if they are issued in the same written statement (e.g., a public social media post), or in a singular public speaking event (e.g., a press conference, a speech).\n\nEndorsements via social media count only from verified accounts controlled by Donald Trump. Likes, reposts, or shares alone do not constitute a qualifying endorsement.\n\nIf Donald Trump officially files his candidacy for the 2028 United States Presidential election before issuing a qualifying endorsement, this market will resolve to “Donald Trump.” Statements alone will not be sufficient to resolve this market to “Donald Trump.”\n\nOnce a qualifying endorsement has occurred, subsequent retractions, rescissions, or endorsements of other individuals will not affect the determination of the first individual endorsed. If Donald Trump does not issue any qualifying endorsements, or file his own candidacy, by November 6, 2028, 11:59 PM ET, this market will resolve to “Other”.\n\nThe resolution sources for this market will be official statements from Donald Trump and a consensus of credible reporting.",
        "resolutionSource": "",
        "startDate": "2026-07-30T18:59:06.390891Z",
        "creationDate": "2026-07-30T19:06:17.869026Z",
        "endDate": "2028-11-07T04:59:00Z",
        "image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/who-will-donald-trump-endorse-in-the-2028-united-states-presidential-election-20-HJxldsGlrWYS.jpg",
        "icon": "https://polymarket-upload.s3.us-east-2.amazonaws.com/who-will-donald-trump-endorse-in-the-2028-united-states-presidential-election-20-HJxldsGlrWYS.jpg",
        "active": true,
        "closed": false,
        "archived": false,
        "new": false,
        "featured": false,
        "restricted": true,
        "liquidity": 14827.14514,
        "volume": 20330.640767,
        "openInterest": 1995.6835909999995,
        "sortBy": "price",
        "createdAt": "2026-07-30T18:55:03.557455Z",
        "updatedAt": "2026-10-02T12:53:34.177351Z",
        "competitive": 0.9999750006249843,
        "enableOrderBook": true,
        "liquidityClob": 14827.14514,
        "negRisk": true,
        "negRiskMarketID": "0x07ea23b85d3910c021e30649613fa2c3722fdfd640acbfcc411d7ecbda1b6000",
        "commentCount": 1,
        "markets": [
          {
            "id": "3229166",
            "question": "Sample comment text (redacted).",
            "conditionId": "0x1f47ec472a4c625225b3331d9b568df885fc4e2de882716bc895231831046b37",
            "slug": "will-donald-trump-endorse-donald-trump-in-the-2028-us-presidential-election-20260727201017696",
            "resolutionSource": "",
            "endDate": "2028-11-07T04:59:00Z",
            "liquidity": "803.21249",
            "startDate": "2026-07-30T18:59:06.390891Z",
            "image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/will-donald-trump-win-the-2028-us-presidential-election-4gVusUQRi_GG.png",
            "icon": "https://polymarket-upload.s3.us-east-2.amazonaws.com/will-donald-trump-win-the-2028-us-presidential-election-4gVusUQRi_GG.png",
            "description": "This market will resolve according to the first individual that Donald Trump endorses for President of the United States in the 2028 United States Presidential Election. \n\nAn endorsement is defined as a statement by Donald Trump that i) is made publicly (e.g., through a press release, an on-the-record interview, a speech, a campaign event, a post from a verified account on social media); ii) explicitly and unambiguously expresses unique support for an individual as a candidate for President of the United States in the 2028 United States Presidential election; and iii) is characterized by a consensus of credible reporting as an official endorsement by Donald Trump of the individual for President in the 2028 United States presidential election.\n\nAn endorsement of an individual for the Republican Party’s nomination to the 2028 United States Presidential election will qualify. Endorsements of a candidate for the Democratic Party's nomination without also endorsing that candidate for President in the general election will not qualify.\n\nThe following will not be considered endorsements: positive or favorable comments about a candidate without a clear public statement of direct support; conditional statements giving support only if certain conditions are met; statements equally expressing support for multiple candidates (e.g., “I support Marco and J.D.”); statements expressing opposition to a candidate without endorsing any candidate; private or non-public statements; and statements that are clearly sarcastic, made in jest, or immediately clarified as not reflecting genuine support.\n\nAn endorsement of a ticket comprising a presidential candidate and a vice-presidential candidate constitutes a qualifying endorsement only of the individual endorsed for President. If the endorsement is of a ticket with undefined presidential and vice-presidential roles, or the roles on an endorsed ticket cannot be determined by the statement itself or a consensus of credible reporting, no qualifying endorsement will be deemed to have occurred.\n\nIf Donald Trump issues multiple concurrent statements meeting this standard, directed at different individuals, this will not constitute a qualifying endorsement and this market will remain open and resolve based on the first standalone qualifying endorsement issued. Endorsements will be considered to be issued concurrently only if they are issued in the same written statement (e.g., a public social media post), or in a singular public speaking event (e.g., a press conference, a speech).\n\nEndorsements via social media count only from verified accounts controlled by Donald Trump. Likes, reposts, or shares alone do not constitute a qualifying endorsement.\n\nIf Donald Trump officially files his candidacy for the 2028 United States Presidential election before issuing a qualifying endorsement, this market will resolve to “Donald Trump.” Statements alone will not be sufficient to resolve this market to “Donald Trump.”\n\nOnce a qualifying endorsement has occurred, subsequent retractions, rescissions, or endorsements of other individuals will not affect the determination of the first individual endorsed. If Donald Trump does not issue any qualifying endorsements, or file his own candidacy, by November 6, 2028, 11:59 PM ET, this market will resolve to “Other”.\n\nThe resolution sources for this market will be official statements from Donald Trump and a consensus of credible reporting.",
            "outcomes": "[\"Yes\", \"No\"]",
            "outcomePrices": "[\"0.0215\", \"0.9785\"]",
            "volume": "1519.6938059999998",
            "active": true,
            "closed": false,
            "marketMakerAddress": "",
            "createdAt": "2026-07-30T18:55:04.109442Z",
            "updatedAt": "2026-10-02T12:53:26.408222Z",
            "new": false,
            "featured": false,
            "submitted_by": "0xF43d55F3A8B7484Ed4B6931f93CB6F9eF5Dd369D",
            "archived": false,
            "resolvedBy": "0x69c47De9D4D3Dad79590d61b9e05918E03775f24",
            "restricted": true,
            "groupItemTitle": "Donald Trump",
            "groupItemThreshold": "0",
            "questionID": "Sample comment text (redacted).",
            "enableOrderBook": true,
            "orderPriceMinTickSize": 0.001,
            "orderMinSize": 5,
            "volumeNum": 1519.6938059999998,
            "liquidityNum": 803.21249,
            "endDateIso": "2028-11-07",
            "startDateIso": "2026-07-30",
            "hasReviewedDates": true,
            "clobTokenIds": "[\"74288739467333444940073223398441508133465696601345412147162566885004122913083\", \"13496782538562394046629289310351969655092189393193014968458210306239116323550\"]",
            "comboStatus": "disabled",
            "umaBond": "500",
            "umaReward": "3.5",
            "volumeClob": 1519.6938059999998,
            "liquidityClob": 803.21249,
            "makerBaseFee": 1000,
            "takerBaseFee": 1000,
            "customLiveness": 0,
            "acceptingOrders": true,
            "negRisk": true,
            "negRiskMarketID": "0x07ea23b85d3910c021e30649613fa2c3722fdfd640acbfcc411d7ecbda1b6000",
            "negRiskRequestID": "0x8fd759cc8b0bbd917db50eee4756d86595bfb5b1e11aa0a9a54b80c03e8410e8",
            "ready": false,
            "funded": false,
            "acceptingOrdersTimestamp": "2026-07-30T18:58:06Z",
            "cyom": false,
            "competitive": 0.8136946435905578,
            "pagerDutyNotificationEnabled": false,
            "approved": true,
            "rewardsMinSize": 20,
            "rewardsMaxSpread": 4.5,
            "spread": 0.017,
            "oneDayPriceChange": -0.0055,
            "oneHourPriceChange": -0.0005,
            "oneWeekPriceChange": -0.017,
            "oneMonthPriceChange": -0.0185,
            "lastTradePrice": 0.014,
            "bestBid": 0.013,
            "bestAsk": 0.03,
            "automaticallyActive": true,
            "clearBookOnStart": true,
            "showGmpSeries": false,
            "showGmpOutcome": false,
            "manualActivation": false,
            "negRiskOther": false,
            "umaResolutionStatuses": "[]",
            "pendingDeployment": false,
            "deploying": false,
            "deployingTimestamp": "2026-07-30T18:57:05.451119Z",
            "rfqEnabled": false,
            "holdingRewardsEnabled": false,
            "feesEnabled": true,
            "feeType": "politics_fees",
            "feeSchedule": {
              "exponent": 1,
              "rate": 0.04,
              "takerOnly": true,
              "rebateRate": 0.25
            },
            "version": "v1",
            "outcomesList": [
              "Yes",
              "No"
            ],
            "outcomePricesNum": [
              0.0215,
              0.9785
            ],
            "clobTokenIdsList": [
              "74288739467333444940073223398441508133465696601345412147162566885004122913083",
              "13496782538562394046629289310351969655092189393193014968458210306239116323550"
            ]
          },
          {
            "id": "3229167",
            "question": "Sample comment text (redacted).",
            "conditionId": "0xf9e55ef9a1dad890d080c3bda6e5ff4a5ba5ff5dd823d18e8b53b13ea783403c",
            "slug": "will-donald-trump-endorse-jptdpt-vance-in-the-2028-us-presidential-election-20260727201017697",
            "resolutionSource": "",
            "endDate": "2028-11-07T04:59:00Z",
            "liquidity": "2952.7533",
            "startDate": "2026-07-30T18:59:09.584418Z",
            "image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/will-jd-vance-win-the-2028-us-presidential-election-P-zEgXjCWbdY.png",
            "icon": "https://polymarket-upload.s3.us-east-2.amazonaws.com/will-jd-vance-win-the-2028-us-presidential-election-P-zEgXjCWbdY.png",
            "description": "This market will resolve according to the first individual that Donald Trump endorses for President of the United States in the 2028 United States Presidential Election. \n\nAn endorsement is defined as a statement by Donald Trump that i) is made publicly (e.g., through a press release, an on-the-record interview, a speech, a campaign event, a post from a verified account on social media); ii) explicitly and unambiguously expresses unique support for an individual as a candidate for President of the United States in the 2028 United States Presidential election; and iii) is characterized by a consensus of credible reporting as an official endorsement by Donald Trump of the individual for President in the 2028 United States presidential election.\n\nAn endorsement of an individual for the Republican Party’s nomination to the 2028 United States Presidential election will qualify. Endorsements of a candidate for the Democratic Party's nomination without also endorsing that candidate for President in the general election will not qualify.\n\nThe following will not be considered endorsements: positive or favorable comments about a candidate without a clear public statement of direct support; conditional statements giving support only if certain conditions are met; statements equally expressing support for multiple candidates (e.g., “I support Marco and J.D.”); statements expressing opposition to a candidate without endorsing any candidate; private or non-public statements; and statements that are clearly sarcastic, made in jest, or immediately clarified as not reflecting genuine support.\n\nAn endorsement of a ticket comprising a presidential candidate and a vice-presidential candidate constitutes a qualifying endorsement only of the individual endorsed for President. If the endorsement is of a ticket with undefined presidential and vice-presidential roles, or the roles on an endorsed ticket cannot be determined by the statement itself or a consensus of credible reporting, no qualifying endorsement will be deemed to have occurred.\n\nIf Donald Trump issues multiple concurrent statements meeting this standard, directed at different individuals, this will not constitute a qualifying endorsement and this market will remain open and resolve based on the first standalone qualifying endorsement issued. Endorsements will be considered to be issued concurrently only if they are issued in the same written statement (e.g., a public social media post), or in a singular public speaking event (e.g., a press conference, a speech).\n\nEndorsements via social media count only from verified accounts controlled by Donald Trump. Likes, reposts, or shares alone do not constitute a qualifying endorsement.\n\nIf Donald Trump officially files his candidacy for the 2028 United States Presidential election before issuing a qualifying endorsement, this market will resolve to “Donald Trump.” Statements alone will not be sufficient to resolve this market to “Donald Trump.”\n\nOnce a qualifying endorsement has occurred, subsequent retractions, rescissions, or endorsements of other individuals will not affect the determination of the first individual endorsed. If Donald Trump does not issue any qualifying endorsements, or file his own candidacy, by November 6, 2028, 11:59 PM ET, this market will resolve to “Other”.\n\nThe resolution sources for this market will be official statements from Donald Trump and a consensus of credible reporting.",
            "outcomes": "[\"Yes\", \"No\"]",
            "outcomePrices": "[\"0.495\", \"0.505\"]",
            "volume": "8462.803645",
            "active": true,
            "closed": false,
            "marketMakerAddress": "",
            "createdAt": "2026-07-30T18:55:04.544006Z",
            "updatedAt": "2026-10-02T12:53:26.408222Z",
            "new": false,
            "featured": false,
            "submitted_by": "0xF43d55F3A8B7484Ed4B6931f93CB6F9eF5Dd369D",
            "archived": false,
            "resolvedBy": "0x69c47De9D4D3Dad79590d61b9e05918E03775f24",
            "restricted": true,
            "groupItemTitle": "J.D. Vance",
            "groupItemThreshold": "1",
            "questionID": "Sample comment text (redacted).",
            "enableOrderBook": true,
            "orderPriceMinTickSize": 0.01,
            "orderMinSize": 5,
            "volumeNum": 8462.803645,
            "liquidityNum": 2952.7533,
            "endDateIso": "2028-11-07",
            "startDateIso": "2026-07-30",
            "hasReviewedDates": true,
            "clobTokenIds": "[\"20213624738629602734871575785250006631406621390044044063230082562317459092954\", \"409692822828057446010651693526860580657532057409114328624834759564694498621\"]",
            "comboStatus": "disabled",
            "umaBond": "500",
            "umaReward": "3.5",
            "volumeClob": 8462.803645,
            "liquidityClob": 2952.7533,
            "makerBaseFee": 1000,
            "takerBaseFee": 1000,
            "customLiveness": 0,
            "acceptingOrders": true,
            "negRisk": true,
            "negRiskMarketID": "0x07ea23b85d3910c021e30649613fa2c3722fdfd640acbfcc411d7ecbda1b6000",
            "negRiskRequestID": "0x507f8f282843a930e50fa87b041b746159ad447893beadfabaaa80c9f5fb4503",
            "ready": false,
            "funded": false,
            "acceptingOrdersTimestamp": "2026-07-30T18:58:09Z",
            "cyom": false,
            "competitive": 0.9999750006249843,
            "pagerDutyNotificationEnabled": false,
            "approved": true,
            "clobRewards": [
              {
                "id": "1090525",
                "conditionId": "0xf9e55ef9a1dad890d080c3bda6e5ff4a5ba5ff5dd823d18e8b53b13ea783403c",
                "assetAddress": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
                "rewardsAmount": 0,
                "rewardsDailyRate": 4,
                "startDate": "2026-09-30",
                "endDate": "2500-12-31"
              }
            ],
            "rewardsMinSize": 20,
            "rewardsMaxSpread": 5.5,
            "spread": 0.01,
            "oneDayPriceChange": 0.005,
            "oneMonthPriceChange": 0.005,
            "lastTradePrice": 0.48,
            "bestBid": 0.49,
            "bestAsk": 0.5,
            "automaticallyActive": true,
            "clearBookOnStart": true,
            "showGmpSeries": false,
            "showGmpOutcome": false,
            "manualActivation": false,
            "negRiskOther": false,
            "umaResolutionStatuses": "[]",
            "pendingDeployment": false,
            "deploying": false,
            "deployingTimestamp": "2026-07-30T18:57:05.464472Z",
            "rfqEnabled": false,
            "holdingRewardsEnabled": false,
            "feesEnabled": true,
            "feeType": "politics_fees",
            "feeSchedule": {
              "exponent": 1,
              "rate": 0.04,
              "takerOnly": true,
              "rebateRate": 0.25
            },
            "version": "v1",
            "outcomesList": [
              "Yes",
              "No"
            ],
            "outcomePricesNum": [
              0.495,
              0.505
            ],
            "clobTokenIdsList": [
              "20213624738629602734871575785250006631406621390044044063230082562317459092954",
              "409692822828057446010651693526860580657532057409114328624834759564694498621"
            ]
          }
        ],
        "tags": [
          {
            "id": "126",
            "label": "Trump",
            "slug": "trump",
            "forceShow": false,
            "publishedAt": "2023-11-02 21:23:16.384+00",
            "updatedBy": 15,
            "createdAt": "2023-11-02T21:23:16.39Z",
            "updatedAt": "2026-04-17T20:39:14.206724Z"
          },
          {
            "id": "2",
            "label": "Politics",
            "slug": "politics",
            "forceShow": false,
            "publishedAt": "2023-10-25 18:55:50.674+00",
            "updatedBy": 13,
            "createdAt": "2023-10-25T18:55:50.681Z",
            "updatedAt": "2026-04-17T20:39:54.201881Z",
            "forceHide": true
          }
        ],
        "cyom": false,
        "showAllOutcomes": true,
        "showMarketImages": true,
        "enableNegRisk": true,
        "automaticallyActive": true,
        "gmpChartMode": "default",
        "negRiskAugmented": true,
        "estimateValue": false,
        "cumulativeMarkets": false,
        "pendingDeployment": false,
        "deploying": false,
        "deployingTimestamp": "2026-07-30T18:55:59.689488Z",
        "eventMetadata": {
          "context_requires_regen": false
        },
        "version": "v1"
      },
      {
        "id": "772736",
        "ticker": "will-trumps-first-pick-win-the-2028-us-presidential-election-20260727202646079",
        "slug": "will-trumps-first-pick-win-the-2028-us-presidential-election-20260727202646079",
        "title": "Will Trump's first pick win the 2028 US presidential election?",
        "description": "This market will resolve to “Yes” if the first individual that Donald Trump endorses for President of the United States in the 2028 United States Presidential Election wins the 2028 United States Presidential Election. Otherwise, this market will resolve to “No”. \n\nThe following rules govern the determination of the first individual that Donald Trump endorses for President of the United States in the 2028 United States Presidential Election: \n\nAn endorsement is defined as a statement by Donald Trump that i) is made publicly (e.g., through a press release, an on-the-record interview, a speech, a campaign event, a post from a verified account on social media); ii) explicitly and unambiguously expresses unique support for an individual as a candidate for President of the United States in the 2028 United States Presidential Election; and iii) is characterized by a consensus of credible reporting as an official endorsement by Donald Trump of the individual for President in the 2028 United States Presidential Election.\n\nAn endorsement of an individual for the Republican Party’s nomination in the 2028 United States Presidential Election will qualify as an endorsement for the 2028 United States Presidential Election. Endorsements of a candidate for the Democratic Party's nomination without also endorsing that candidate for President in the general election will not qualify.\n\nThe following will not be considered endorsements: positive or favorable comments about a candidate without a clear public statement of direct support; conditional statements giving support only if certain conditions are met; statements equally expressing support for multiple candidates (e.g., “I support Marco and J.D.”); statements expressing opposition to a candidate without endorsing any candidate; private or non-public statements; and statements that are clearly sarcastic, made in jest, or immediately clarified as not reflecting genuine support.\n\nAn endorsement of a ticket comprising a presidential candidate and a vice-presidential candidate constitutes a qualifying endorsement only of the individual endorsed for President. If the endorsement is of a ticket with undefined presidential and vice-presidential roles, or the roles on an endorsed ticket cannot be determined by the statement itself or a consensus of credible reporting, no qualifying endorsement will be deemed to have occurred.\n\nIf Donald Trump issues multiple concurrent statements meeting this standard, directed at different individuals, this will not constitute a qualifying endorsement and this market will remain open and resolve based on the first standalone qualifying endorsement issued. Endorsements will be considered to be issued concurrently only if they are issued in the same written statement (e.g., a public social media post), or in a singular public speaking event (e.g., a press conference, a speech).\n\nEndorsements via social media count only from verified accounts controlled by Donald Trump. Likes, reposts, or shares alone do not constitute a qualifying endorsement.\n\nIf Donald Trump officially files his candidacy for the 2028 United States Presidential Election before issuing a qualifying endorsement, he will be considered to have endorsed himself. Statements alone will not be sufficient to constitute Trump’s endorsement of himself.\n\nOnce a qualifying endorsement has occurred, subsequent retractions, rescissions, or endorsements of other individuals will not affect the determination of the first individual endorsed. If Donald Trump does not issue any qualifying endorsements, or file his own candidacy, by November 6, 2028, 11:59 PM ET, this market will resolve to “No”.\n\nThe resolution sources for Trump’s endorsement will be official statements from Donald Trump and a consensus of credible reporting. The resolution sources for the winner of the 2028 United States Presidential Election are the Associated Press, Fox News, and NBC. All three sources must call the race for the same candidate. If all three sources haven’t called the race for the same candidate by the inauguration date (January 20, 2029) this market will resolve based on who is inaugurated.",
        "resolutionSource": "",
        "startDate": "2026-07-30T15:16:57.124026Z",
        "creationDate": "2026-07-30T15:19:13.194794Z",
        "endDate": "2028-11-08T04:59:00Z",
        "image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/will-trumps-first-pick-win-the-2028-us-presidential-election-20260727202646079-hAMH-QsTbPlO.jpg",
        "icon": "https://polymarket-upload.s3.us-east-2.amazonaws.com/will-trumps-first-pick-win-the-2028-us-presidential-election-20260727202646079-hAMH-QsTbPlO.jpg",
        "active": true,
        "closed": false,
        "archived": false,
        "new": false,
        "featured": false,
        "restricted": true,
        "liquidity": 31463.5141,
        "volume": 1500.504576,
        "openInterest": 319.613076,
        "sortBy": "ascending",
        "createdAt": "2026-07-30T15:14:52.071359Z",
        "updatedAt": "2026-10-02T12:53:34.177351Z",
        "competitive": 0.9651578033008396,
        "enableOrderBook": true,
        "liquidityClob": 31463.5141,
        "negRisk": false,
        "commentCount": 1,
        "markets": [
          {
            "id": "3222753",
            "question": "Sample comment text (redacted).",
            "conditionId": "0xa986066a4a07d3f424a7e1418e3815e7742135c2c71cecacd493fabc0ec3b405",
            "slug": "will-trumps-first-pick-win-the-2028-us-presidential-election-20260727202646079",
            "resolutionSource": "",
            "endDate": "2028-11-08T04:59:00Z",
            "liquidity": "31469.3941",
            "startDate": "2026-07-30T15:16:57.124026Z",
            "image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/will-trumps-first-pick-win-the-2028-us-presidential-election-20260727202646079-hAMH-QsTbPlO.jpg",
            "icon": "https://polymarket-upload.s3.us-east-2.amazonaws.com/will-trumps-first-pick-win-the-2028-us-presidential-election-20260727202646079-hAMH-QsTbPlO.jpg",
            "description": "This market will resolve to “Yes” if the first individual that Donald Trump endorses for President of the United States in the 2028 United States Presidential Election wins the 2028 United States Presidential Election. Otherwise, this market will resolve to “No”. \n\nThe following rules govern the determination of the first individual that Donald Trump endorses for President of the United States in the 2028 United States Presidential Election: \n\nAn endorsement is defined as a statement by Donald Trump that i) is made publicly (e.g., through a press release, an on-the-record interview, a speech, a campaign event, a post from a verified account on social media); ii) explicitly and unambiguously expresses unique support for an individual as a candidate for President of the United States in the 2028 United States Presidential Election; and iii) is characterized by a consensus of credible reporting as an official endorsement by Donald Trump of the individual for President in the 2028 United States Presidential Election.\n\nAn endorsement of an individual for the Republican Party’s nomination in the 2028 United States Presidential Election will qualify as an endorsement for the 2028 United States Presidential Election. Endorsements of a candidate for the Democratic Party's nomination without also endorsing that candidate for President in the general election will not qualify.\n\nThe following will not be considered endorsements: positive or favorable comments about a candidate without a clear public statement of direct support; conditional statements giving support only if certain conditions are met; statements equally expressing support for multiple candidates (e.g., “I support Marco and J.D.”); statements expressing opposition to a candidate without endorsing any candidate; private or non-public statements; and statements that are clearly sarcastic, made in jest, or immediately clarified as not reflecting genuine support.\n\nAn endorsement of a ticket comprising a presidential candidate and a vice-presidential candidate constitutes a qualifying endorsement only of the individual endorsed for President. If the endorsement is of a ticket with undefined presidential and vice-presidential roles, or the roles on an endorsed ticket cannot be determined by the statement itself or a consensus of credible reporting, no qualifying endorsement will be deemed to have occurred.\n\nIf Donald Trump issues multiple concurrent statements meeting this standard, directed at different individuals, this will not constitute a qualifying endorsement and this market will remain open and resolve based on the first standalone qualifying endorsement issued. Endorsements will be considered to be issued concurrently only if they are issued in the same written statement (e.g., a public social media post), or in a singular public speaking event (e.g., a press conference, a speech).\n\nEndorsements via social media count only from verified accounts controlled by Donald Trump. Likes, reposts, or shares alone do not constitute a qualifying endorsement.\n\nIf Donald Trump officially files his candidacy for the 2028 United States Presidential Election before issuing a qualifying endorsement, he will be considered to have endorsed himself. Statements alone will not be sufficient to constitute Trump’s endorsement of himself.\n\nOnce a qualifying endorsement has occurred, subsequent retractions, rescissions, or endorsements of other individuals will not affect the determination of the first individual endorsed. If Donald Trump does not issue any qualifying endorsements, or file his own candidacy, by November 6, 2028, 11:59 PM ET, this market will resolve to “No”.\n\nThe resolution sources for Trump’s endorsement will be official statements from Donald Trump and a consensus of credible reporting. The resolution sources for the winner of the 2028 United States Presidential Election are the Associated Press, Fox News, and NBC. All three sources must call the race for the same candidate. If all three sources haven’t called the race for the same candidate by the inauguration date (January 20, 2029) this market will resolve based on who is inaugurated.",
            "outcomes": "[\"Yes\", \"No\"]",
            "outcomePrices": "[\"0.31\", \"0.69\"]",
            "volume": "1500.504576",
            "active": true,
            "closed": false,
            "marketMakerAddress": "",
            "createdAt": "2026-07-30T15:14:52.478299Z",
            "updatedAt": "2026-10-02T12:53:26.408222Z",
            "new": false,
            "featured": false,
            "submitted_by": "0xF43d55F3A8B7484Ed4B6931f93CB6F9eF5Dd369D",
            "archived": false,
            "resolvedBy": "0x65070BE91477460D8A7AeEb94ef92fe056C2f2A7",
            "restricted": true,
            "questionID": "Sample comment text (redacted).",
            "enableOrderBook": true,
            "orderPriceMinTickSize": 0.01,
            "orderMinSize": 5,
            "volumeNum": 1500.504576,
            "liquidityNum": 31469.3941,
            "endDateIso": "2028-11-08",
            "startDateIso": "2026-07-30",
            "hasReviewedDates": true,
            "clobTokenIds": "[\"51643523825980119811003865366710580854443210671696048280312399189599671584536\", \"37022373762366493953356825278300447180644542156943670018228576206272617068851\"]",
            "comboStatus": "disabled",
            "umaBond": "500",
            "umaReward": "3.5",
            "volumeClob": 1500.504576,
            "liquidityClob": 31469.3941,
            "makerBaseFee": 1000,
            "takerBaseFee": 1000,
            "customLiveness": 0,
            "acceptingOrders": true,
            "negRisk": false,
            "negRiskRequestID": "",
            "ready": false,
            "funded": false,
            "acceptingOrdersTimestamp": "2026-07-30T15:16:09Z",
            "cyom": false,
            "competitive": 0.9651578033008396,
            "pagerDutyNotificationEnabled": false,
            "approved": true,
            "clobRewards": [
              {
                "id": "1087429",
                "conditionId": "0xa986066a4a07d3f424a7e1418e3815e7742135c2c71cecacd493fabc0ec3b405",
                "assetAddress": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
                "rewardsAmount": 0,
                "rewardsDailyRate": 2,
                "startDate": "2026-07-30",
                "endDate": "2500-12-31"
              }
            ],
            "rewardsMinSize": 20,
            "rewardsMaxSpread": 4.5,
            "spread": 0.06,
            "oneWeekPriceChange": 0.12,
            "oneMonthPriceChange": 0.12,
            "lastTradePrice": 0.3,
            "bestBid": 0.28,
            "bestAsk": 0.34,
            "automaticallyActive": true,
            "clearBookOnStart": true,
            "showGmpSeries": false,
            "showGmpOutcome": false,
            "manualActivation": false,
            "negRiskOther": false,
            "umaResolutionStatuses": "[]",
            "pendingDeployment": false,
            "deploying": false,
            "deployingTimestamp": "2026-07-30T15:15:08.180762Z",
            "rfqEnabled": false,
            "holdingRewardsEnabled": false,
            "feesEnabled": true,
            "feeType": "politics_fees",
            "feeSchedule": {
              "exponent": 1,
              "rate": 0.04,
              "takerOnly": true,
              "rebateRate": 0.25
            },
            "version": "v1",
            "outcomesList": [
              "Yes",
              "No"
            ],
            "outcomePricesNum": [
              0.31,
              0.69
            ],
            "clobTokenIdsList": [
              "51643523825980119811003865366710580854443210671696048280312399189599671584536",
              "37022373762366493953356825278300447180644542156943670018228576206272617068851"
            ]
          }
        ],
        "tags": [
          {
            "id": "126",
            "label": "Trump",
            "slug": "trump",
            "forceShow": false,
            "publishedAt": "2023-11-02 21:23:16.384+00",
            "updatedBy": 15,
            "createdAt": "2023-11-02T21:23:16.39Z",
            "updatedAt": "2026-04-17T20:39:14.206724Z"
          },
          {
            "id": "100285",
            "label": "Vance",
            "slug": "vance",
            "createdAt": "2024-06-25T19:46:59.165544Z",
            "updatedAt": "2026-04-17T21:09:02.084203Z"
          }
        ],
        "cyom": false,
        "showAllOutcomes": true,
        "showMarketImages": true,
        "enableNegRisk": false,
        "automaticallyActive": true,
        "gmpChartMode": "default",
        "negRiskAugmented": false,
        "estimateValue": false,
        "cumulativeMarkets": false,
        "pendingDeployment": false,
        "deploying": false,
        "eventMetadata": {
          "context_requires_regen": false
        },
        "version": "v1"
      }
    ],
    "dropped": 0
  },
  "credits_used": 5,
  "request_id": "req_example000000",
  "cached": false,
  "pagination": {
    "next_cursor": null,
    "has_more": false,
    "page_size": 23
  },
  "credits_remaining": 9999,
  "source": "captured",
  "captured_at": "2026-10-02T12:54:38.743Z",
  "redacted": true
}

Live sample illustrating the unified response shape. Field values reflect the record you query.

API Details

How does the Polymarket Research API work?

Send a GET request with your API key and get back clean, structured JSON in our unified schema. Supported computed fields are populated when the source provides the required inputs.

Method

GET

Response

JSON

Why SocialCrawl

Why use SocialCrawl for Polymarket Research data?

We handle the complexity of Polymarket data extraction so you can focus on building. Unified schema, AI enrichment, and zero platform logic in your code.

Developer First

How do you scrape social media data in seconds?

The fastest social media scraping API for developers. Scrape profiles, posts, comments, and analytics from 69 platforms covering 10B+ monthly active users.

One schema, every platform

Query 69 platforms with identical response structures. Write your integration once.

Computed fields, not just scraped

When an endpoint supports these metrics and the source provides the required inputs, the normalized record includes engagement_rate, estimated_reach, content_category, and language. Ready to use.

See your data before you code

Visual Data Explorer. Paste any URL, get rich result cards, sortable tables, CSV export.

import requests

response = requests.get(
    'https://www.socialcrawl.dev/v1/tiktok/profile',
    params={'handle': 'charlidamelio'},
    headers={'x-api-key': 'sc_YOUR_API_KEY'}
)
data = response.json()
[ .JSON ]
{
  "success": true,
  "platform": "tiktok",
  "data": {
    "author": {
      "username": "charlidamelio",
      "followers": 152400000
    },
    "engagement": {
      "likes": 12400000000,
      "engagement_rate": 0.087
    },
    "metadata": {
      "language": "en",
      "content_category": "lifestyle"
    }
  }
}
+ 69 platforms
FAQ

Have a question? We got answers

Find answers to frequently asked questions about SocialCrawl's API, pricing, and capabilities.

Contact us
What does the Polymarket research endpoint do?
Send a GET request to /v1/polymarket/research with a topic in the query parameter. SocialCrawl fans out several keyword searches for that topic and returns an aggregated, multi-market view (markets, outcomes, odds, and volume) instead of one query's matches.
How is research different from the search endpoint?
Search runs a single keyword query and returns matching markets. Research runs several searches for one topic and aggregates them, so you get broader event-probability coverage in a single call. Use search for lookups, research for topic-level analysis.
Who is the prediction market research endpoint for?
Traders, quant researchers, journalists, and anyone building sentiment or event-probability pipelines. It is the fastest way to pull a topic's full prediction-market picture (every related market's odds and volume) without writing your own fan-out logic.
What data fields come back from research?
The aggregated view includes each market's question, outcomes with current odds and prices, total volume, end date, and resolution status. Everything is normalised into the SocialCrawl schema, so the same parser handles research, search, and other platforms.
How much does the prediction market API research call cost?
Each research call costs 5 credits on the advanced tier because it fans out several searches per request. New accounts get 100 free credits with no credit card, enough to run 20 multi-market research calls before paying anything.

Ask AI about SocialCrawl

Ready to scrape Polymarket Research data?

Get your API key and start pulling Polymarket data in under 60 seconds.

Start for free

🤖 AI agent or LLM? Read this page as markdown