{
  "name": "CrowdPull public-data API",
  "description": "A pay-per-job public web data API for AI agents. No scraper setup, no separate source accounts, no long subscription before trying a source.",
  "url": "https://crowdpull.click",
  "homepage": "https://crowdpull.click/",
  "openapi": "https://crowdpull.click/openapi.json",
  "x402": "https://crowdpull.click/.well-known/x402",
  "llmsTxt": "https://crowdpull.click/llms.txt",
  "mcpServerCard": "https://crowdpull.click/.well-known/mcp/server-card.json",
  "actorCatalog": "https://crowdpull.click/data/crowdpull-actors.json",
  "settlement": {
    "network": "eip155:8453",
    "asset": "USDC",
    "assetAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402",
    "payTo": "0x95E548cC2000D8674B3A79F9EbeEc30f8fb7A906"
  },
  "endpoints": [
    {
      "name": "crowdpull.catalog.search",
      "title": "CrowdPull source catalog",
      "category": "catalog",
      "kind": "catalog",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/list",
      "path": "/api/actors/list",
      "price": {
        "mode": "fixed",
        "currency": "USD",
        "amount": "0.005"
      },
      "x402": true,
      "configured": true,
      "description": "Search CrowdPull's public-data catalog and get the supported paid API routes for agent calls.",
      "tags": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search text such as Facebook Marketplace, OfferUp, AliExpress reviews, furniture, local deals, or product reviews."
          },
          "family": {
            "type": "string",
            "description": "Optional CrowdPull family slug such as marketplace-listings, facebook-data, or ecommerce-products-reviews."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 10
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object"
      },
      "workflow": "Pay once to search the catalog and choose a paid source route."
    },
    {
      "name": "marketplace-leads",
      "title": "Marketplace Lead Bundle",
      "category": "workflow-bundles",
      "kind": "workflow",
      "method": "POST",
      "url": "https://crowdpull.click/api/workflows/marketplace-leads",
      "path": "/api/workflows/marketplace-leads",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.19",
        "max": "2.99"
      },
      "x402": true,
      "configured": true,
      "description": "Run a multi-source marketplace lead search, normalize listing fields, deduplicate by source URL/listing ID/title/price/location, and rank useful leads.",
      "tags": [
        "marketplace leads",
        "resale sourcing",
        "classifieds",
        "dedupe",
        "lead scoring"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Marketplace Lead Bundle request. CrowdPull fans this out to the selected public-data sources, then normalizes, deduplicates, and ranks the rows.",
            "properties": {
              "query": {
                "type": "string",
                "description": "Main search term, keyword, product, role, company, or item."
              },
              "searchQuery": {
                "type": "string",
                "description": "Alias for query."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, market, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxPerSource": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 25
              },
              "sources": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "facebook-marketplace-scraper",
                    "offerup-scraper",
                    "craigslist-scraper",
                    "mercari-listings-scraper"
                  ]
                },
                "description": "Optional subset of sources to run. Omit to use the workflow defaults."
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "includeEnrichment": {
                "type": "boolean",
                "default": true
              },
              "filters": {
                "type": "object",
                "additionalProperties": true
              },
              "sourceInputs": {
                "type": "object",
                "additionalProperties": true,
                "description": "Optional per-source input overrides keyed by source name."
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "workflow": {
            "type": "string"
          },
          "jobs": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        },
        "required": [
          "token",
          "workflow",
          "jobs"
        ],
        "additionalProperties": true
      },
      "workflow": "POST input to start a multi-source bundle, then poll /api/workflows/status and fetch normalized rows from /api/workflows/results."
    },
    {
      "name": "rental-comps",
      "title": "Rental Comps Bundle",
      "category": "workflow-bundles",
      "kind": "workflow",
      "method": "POST",
      "url": "https://crowdpull.click/api/workflows/rental-comps",
      "path": "/api/workflows/rental-comps",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.29",
        "max": "3.49"
      },
      "x402": true,
      "configured": true,
      "description": "Run a rental and property comp search across public listing sources, keep source URLs attached, and return normalized price, beds, baths, location, and comp rows.",
      "tags": [
        "rental comps",
        "housing",
        "property listings",
        "rent analysis"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Rental Comps Bundle request. CrowdPull fans this out to the selected public-data sources, then normalizes, deduplicates, and ranks the rows.",
            "properties": {
              "query": {
                "type": "string",
                "description": "Main search term, keyword, product, role, company, or item."
              },
              "searchQuery": {
                "type": "string",
                "description": "Alias for query."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, market, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxPerSource": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 25
              },
              "sources": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "zillow-listings-scraper",
                    "apartments-com-rentals-scraper"
                  ]
                },
                "description": "Optional subset of sources to run. Omit to use the workflow defaults."
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "includeEnrichment": {
                "type": "boolean",
                "default": true
              },
              "filters": {
                "type": "object",
                "additionalProperties": true
              },
              "sourceInputs": {
                "type": "object",
                "additionalProperties": true,
                "description": "Optional per-source input overrides keyed by source name."
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "workflow": {
            "type": "string"
          },
          "jobs": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        },
        "required": [
          "token",
          "workflow",
          "jobs"
        ],
        "additionalProperties": true
      },
      "workflow": "POST input to start a multi-source bundle, then poll /api/workflows/status and fetch normalized rows from /api/workflows/results."
    },
    {
      "name": "review-complaints",
      "title": "Review Complaint Mining Bundle",
      "category": "workflow-bundles",
      "kind": "workflow",
      "method": "POST",
      "url": "https://crowdpull.click/api/workflows/review-complaints",
      "path": "/api/workflows/review-complaints",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.19",
        "max": "2.49"
      },
      "x402": true,
      "configured": true,
      "description": "Collect public product and review rows, keep product IDs/source URLs attached, and rank likely complaints, sentiment clues, and recurring product issues.",
      "tags": [
        "review mining",
        "complaints",
        "product research",
        "sentiment"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Review Complaint Mining Bundle request. CrowdPull fans this out to the selected public-data sources, then normalizes, deduplicates, and ranks the rows.",
            "properties": {
              "query": {
                "type": "string",
                "description": "Main search term, keyword, product, role, company, or item."
              },
              "searchQuery": {
                "type": "string",
                "description": "Alias for query."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, market, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxPerSource": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 25
              },
              "sources": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "aliexpress-reviews-scraper",
                    "target-products-scraper",
                    "flipkart-products-scraper"
                  ]
                },
                "description": "Optional subset of sources to run. Omit to use the workflow defaults."
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "includeEnrichment": {
                "type": "boolean",
                "default": true
              },
              "filters": {
                "type": "object",
                "additionalProperties": true
              },
              "sourceInputs": {
                "type": "object",
                "additionalProperties": true,
                "description": "Optional per-source input overrides keyed by source name."
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "workflow": {
            "type": "string"
          },
          "jobs": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        },
        "required": [
          "token",
          "workflow",
          "jobs"
        ],
        "additionalProperties": true
      },
      "workflow": "POST input to start a multi-source bundle, then poll /api/workflows/status and fetch normalized rows from /api/workflows/results."
    },
    {
      "name": "hiring-signals",
      "title": "Hiring Signal Bundle",
      "category": "workflow-bundles",
      "kind": "workflow",
      "method": "POST",
      "url": "https://crowdpull.click/api/workflows/hiring-signals",
      "path": "/api/workflows/hiring-signals",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.19",
        "max": "1.99"
      },
      "x402": true,
      "configured": true,
      "description": "Find public hiring signals by role, market, and remote filter, then return normalized job, company, salary, location, and apply/source URL fields.",
      "tags": [
        "jobs",
        "hiring signals",
        "sales triggers",
        "labor market"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Hiring Signal Bundle request. CrowdPull fans this out to the selected public-data sources, then normalizes, deduplicates, and ranks the rows.",
            "properties": {
              "query": {
                "type": "string",
                "description": "Main search term, keyword, product, role, company, or item."
              },
              "searchQuery": {
                "type": "string",
                "description": "Alias for query."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, market, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxPerSource": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 25
              },
              "sources": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "crowdpull-ziprecruiter-jobs-scraper"
                  ]
                },
                "description": "Optional subset of sources to run. Omit to use the workflow defaults."
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "includeEnrichment": {
                "type": "boolean",
                "default": true
              },
              "filters": {
                "type": "object",
                "additionalProperties": true
              },
              "sourceInputs": {
                "type": "object",
                "additionalProperties": true,
                "description": "Optional per-source input overrides keyed by source name."
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "workflow": {
            "type": "string"
          },
          "jobs": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        },
        "required": [
          "token",
          "workflow",
          "jobs"
        ],
        "additionalProperties": true
      },
      "workflow": "POST input to start a multi-source bundle, then poll /api/workflows/status and fetch normalized rows from /api/workflows/results."
    },
    {
      "name": "instant-marketplace-leads",
      "title": "Instant Marketplace Leads",
      "category": "cached-results",
      "kind": "instant-cache",
      "method": "POST",
      "url": "https://crowdpull.click/api/instant/marketplace-leads",
      "path": "/api/instant/marketplace-leads",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.01",
        "max": "1.99"
      },
      "x402": true,
      "configured": true,
      "description": "Return cached marketplace lead results immediately when available; optionally start a paid live refresh through the Marketplace Lead Bundle on cache miss.",
      "tags": [
        "instant results",
        "cached marketplace leads",
        "fast agent lookup"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "properties": {
              "query": {
                "type": "string"
              },
              "searchQuery": {
                "type": "string"
              },
              "location": {
                "type": "string"
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 25
              },
              "maxAgeMinutes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1440,
                "default": 240
              },
              "refreshLive": {
                "type": "boolean",
                "default": true
              },
              "sources": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": true
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "workflow": "POST input to retrieve cached rows when available or start a live bundle refresh on cache miss."
    },
    {
      "name": "watchlist-create",
      "title": "CrowdPull Watchlist",
      "category": "recurring-monitoring",
      "kind": "monitor",
      "method": "POST",
      "url": "https://crowdpull.click/api/monitors/watchlist",
      "path": "/api/monitors/watchlist",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.29",
        "max": "2.99"
      },
      "x402": true,
      "configured": true,
      "description": "Create a portable paid watchlist token for repeated marketplace, rental, review, or hiring checks. Agents can store the token and pay for refresh runs.",
      "tags": [
        "watchlist",
        "monitoring",
        "only new results",
        "recurring revenue"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "properties": {
              "workflow": {
                "type": "string",
                "enum": [
                  "marketplace-leads",
                  "rental-comps",
                  "review-complaints",
                  "hiring-signals"
                ],
                "default": "marketplace-leads"
              },
              "query": {
                "type": "string"
              },
              "searchQuery": {
                "type": "string"
              },
              "location": {
                "type": "string"
              },
              "cadence": {
                "type": "string",
                "enum": [
                  "manual",
                  "hourly",
                  "daily",
                  "weekly"
                ],
                "default": "manual"
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 25
              },
              "webhookUrl": {
                "type": "string",
                "description": "Optional customer-owned webhook for future managed-monitor delivery."
              },
              "runInitial": {
                "type": "boolean",
                "default": false
              }
            },
            "additionalProperties": true
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "workflow": "POST input to create a portable watchlist token. Refresh through the related workflow route on the chosen cadence."
    },
    {
      "name": "row-enrichment",
      "title": "CrowdPull Row Enrichment",
      "category": "data-enrichment",
      "kind": "enrichment",
      "method": "POST",
      "url": "https://crowdpull.click/api/enrich/rows",
      "path": "/api/enrich/rows",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.03",
        "max": "0.99"
      },
      "x402": true,
      "configured": true,
      "description": "Normalize, deduplicate, score, and lightly classify supplied public-data rows so agents can buy the value-add without rerunning a source scrape.",
      "tags": [
        "dedupe",
        "lead scoring",
        "sentiment",
        "row normalization",
        "upsell"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            },
            "description": "Rows from CrowdPull or another source. Each row can include source URL, title, price, location, text, rating, company, or other fields."
          },
          "input": {
            "type": "object",
            "properties": {
              "rows": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                },
                "description": "Rows from CrowdPull or another source. Each row can include source URL, title, price, location, text, rating, company, or other fields."
              },
              "mode": {
                "type": "string",
                "enum": [
                  "marketplace",
                  "rentals",
                  "reviews",
                  "jobs",
                  "auto"
                ],
                "default": "auto"
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 500,
                "default": 100
              }
            },
            "additionalProperties": true
          }
        },
        "additionalProperties": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "workflow": "POST rows to normalize, deduplicate, score, and classify without rerunning a scrape."
    },
    {
      "name": "facebook-marketplace-scraper",
      "title": "Facebook Marketplace Scraper",
      "category": "marketplace-listings",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/facebook-marketplace-scraper/call",
      "path": "/api/actors/facebook-marketplace-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.02",
        "max": "1.00"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull Facebook Marketplace run for public local listings. Good for quick lead checks by city, keyword, price range, and optional detail fetch.",
      "tags": [
        "facebook",
        "marketplace",
        "local listings",
        "resale"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Facebook Marketplace Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "marketplaceUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Facebook Marketplace city, category, or search URLs."
              },
              "radiusKm": {
                "type": "integer",
                "minimum": 1,
                "maximum": 500,
                "default": 65
              },
              "minPrice": {
                "type": "integer",
                "minimum": 0,
                "description": "Minimum price in local currency cents."
              },
              "maxPrice": {
                "type": "integer",
                "minimum": 0,
                "description": "Maximum price in local currency cents."
              },
              "untilDate": {
                "type": "string",
                "description": "Only keep listings on or after this YYYY-MM-DD date."
              },
              "strictFiltering": {
                "type": "boolean",
                "default": false
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "offerup-scraper",
      "title": "OfferUp Scraper",
      "category": "marketplace-listings",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/offerup-scraper/call",
      "path": "/api/actors/offerup-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.02",
        "max": "1.00"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull OfferUp run for public local listings. Good for quick resale, free-stuff, furniture, equipment, and price-monitoring checks.",
      "tags": [
        "offerup",
        "marketplace",
        "local listings",
        "resale"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "OfferUp Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "latitude": {
                "type": "number"
              },
              "longitude": {
                "type": "number"
              },
              "radiusMiles": {
                "type": "integer",
                "minimum": 1,
                "maximum": 500,
                "default": 30
              },
              "minPrice": {
                "type": "integer",
                "minimum": 0
              },
              "maxPrice": {
                "type": "integer",
                "minimum": 0
              },
              "condition": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "NEW",
                    "OPEN_BOX",
                    "REFURBISHED",
                    "USED",
                    "BROKEN",
                    "OTHER"
                  ]
                }
              },
              "sortBy": {
                "type": "string",
                "enum": [
                  "-posted",
                  "distance",
                  "price",
                  "-price"
                ],
                "default": "-posted"
              },
              "delivery": {
                "type": "string",
                "enum": [
                  "p",
                  "s",
                  "p_s"
                ],
                "default": "p_s"
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "profitability-router",
        "nativeCandidate": true,
        "fallback": "managed-backend",
        "routingSignals": [
          "customer_price",
          "estimated_native_cost",
          "estimated_managed_cost",
          "minimum_margin"
        ]
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "craigslist-scraper",
      "title": "Craigslist Classifieds Scraper",
      "category": "marketplace-listings",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/craigslist-scraper/call",
      "path": "/api/actors/craigslist-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.03",
        "max": "1.25"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull Craigslist run for public classifieds across for-sale, housing, cars, jobs, gigs, services, community, and events.",
      "tags": [
        "craigslist",
        "classifieds",
        "local listings",
        "lead generation"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Craigslist Classifieds Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "city": {
                "type": "string",
                "description": "Craigslist city or region slug, for example detroit."
              },
              "category": {
                "type": "string",
                "description": "Craigslist category slug such as sss, apa, cta, or jjg."
              },
              "postalCode": {
                "type": "string"
              },
              "searchDistance": {
                "type": "integer",
                "minimum": 1,
                "maximum": 500
              },
              "maxResultsPerSearch": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "profitability-router",
        "nativeCandidate": true,
        "fallback": "managed-backend",
        "routingSignals": [
          "customer_price",
          "estimated_native_cost",
          "estimated_managed_cost",
          "minimum_margin"
        ]
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "mercari-listings-scraper",
      "title": "Mercari Listings Scraper",
      "category": "marketplace-listings",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/mercari-listings-scraper/call",
      "path": "/api/actors/mercari-listings-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.03",
        "max": "1.00"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull Mercari run for public search, item, and seller inventory data with source URLs and listing diagnostics.",
      "tags": [
        "mercari",
        "marketplace",
        "seller inventory",
        "resale"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Mercari Listings Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "queries": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "priceMin": {
                "type": "integer",
                "minimum": 0
              },
              "priceMax": {
                "type": "integer",
                "minimum": 0
              },
              "status": {
                "type": "string",
                "description": "Listing status filter when supported, for example on_sale."
              },
              "maxPages": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10,
                "default": 2
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "zillow-listings-scraper",
      "title": "Zillow Listings Scraper",
      "category": "real-estate-rentals",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/zillow-listings-scraper/call",
      "path": "/api/actors/zillow-listings-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.05",
        "max": "1.50"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull Zillow run for public property search, URL, and lookup workflows with price and property filters.",
      "tags": [
        "zillow",
        "real estate",
        "property listings",
        "housing"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Zillow Listings Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "mode": {
                "type": "string",
                "enum": [
                  "search",
                  "url",
                  "lookup"
                ],
                "default": "search"
              },
              "listingType": {
                "type": "string",
                "description": "for_sale, for_rent, sold, or another source-supported listing type."
              },
              "priceMin": {
                "type": "integer",
                "minimum": 0
              },
              "priceMax": {
                "type": "integer",
                "minimum": 0
              },
              "bedsMin": {
                "type": "integer",
                "minimum": 0
              },
              "bathsMin": {
                "type": "integer",
                "minimum": 0
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "apartments-com-rentals-scraper",
      "title": "Apartments.com Rentals Scraper",
      "category": "real-estate-rentals",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/apartments-com-rentals-scraper/call",
      "path": "/api/actors/apartments-com-rentals-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.05",
        "max": "1.25"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull Apartments.com run for public rental listings by city, price, bedrooms, pet filters, and property type.",
      "tags": [
        "apartments",
        "rentals",
        "housing",
        "rent comps"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Apartments.com Rentals Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "scope": {
                "type": "string",
                "description": "Search scope such as city, state, neighborhood, or url when supported."
              },
              "bedrooms": {
                "type": "string"
              },
              "maxRent": {
                "type": "integer",
                "minimum": 0
              },
              "minRent": {
                "type": "integer",
                "minimum": 0
              },
              "petFriendly": {
                "type": "boolean"
              },
              "maxPages": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10,
                "default": 3
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "aliexpress-reviews-scraper",
      "title": "AliExpress Reviews Scraper",
      "category": "ecommerce-products-reviews",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/aliexpress-reviews-scraper/call",
      "path": "/api/actors/aliexpress-reviews-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.02",
        "max": "0.75"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull AliExpress Reviews run for public product reviews. Good for supplier checks, complaint mining, and review datasets.",
      "tags": [
        "aliexpress",
        "reviews",
        "product research",
        "sentiment"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "AliExpress Reviews Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "productIds": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "type": "string"
                },
                "description": "AliExpress product URLs or numeric product IDs."
              },
              "productId": {
                "type": "string"
              },
              "productUrl": {
                "type": "string"
              },
              "maxReviewsPerProduct": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "default": 50
              },
              "starFilter": {
                "type": "string",
                "enum": [
                  "all_star",
                  "5",
                  "4",
                  "3",
                  "2",
                  "1"
                ],
                "default": "all_star"
              },
              "sortBy": {
                "type": "string",
                "enum": [
                  "default",
                  "latest"
                ],
                "default": "default"
              },
              "includeImages": {
                "type": "boolean",
                "default": false
              },
              "includeProductStats": {
                "type": "boolean",
                "default": true
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "profitability-router",
        "nativeCandidate": true,
        "fallback": "managed-backend",
        "routingSignals": [
          "customer_price",
          "estimated_native_cost",
          "estimated_managed_cost",
          "minimum_margin"
        ]
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "target-products-scraper",
      "title": "Target Products Scraper",
      "category": "ecommerce-products-reviews",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/target-products-scraper/call",
      "path": "/api/actors/target-products-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.03",
        "max": "1.00"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull Target run for public product search, category, product URL, price, rating, UPC, DPCI, and review sample data.",
      "tags": [
        "target",
        "retail",
        "prices",
        "product data"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Target Products Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "productIds": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "tcins": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "storeId": {
                "type": "string"
              },
              "zipCode": {
                "type": "string"
              },
              "includeReviews": {
                "type": "boolean",
                "default": false
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "profitability-router",
        "nativeCandidate": true,
        "fallback": "managed-backend",
        "routingSignals": [
          "customer_price",
          "estimated_native_cost",
          "estimated_managed_cost",
          "minimum_margin"
        ]
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "flipkart-products-scraper",
      "title": "Flipkart Products Scraper",
      "category": "ecommerce-products-reviews",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/flipkart-products-scraper/call",
      "path": "/api/actors/flipkart-products-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.03",
        "max": "1.00"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull Flipkart run for public product listings from search, category, and product pages with optional detail and review enrichment.",
      "tags": [
        "flipkart",
        "ecommerce",
        "prices",
        "product data"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Flipkart Products Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "maxPages": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10
              },
              "includeReviews": {
                "type": "boolean",
                "default": false
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "profitability-router",
        "nativeCandidate": true,
        "fallback": "managed-backend",
        "routingSignals": [
          "customer_price",
          "estimated_native_cost",
          "estimated_managed_cost",
          "minimum_margin"
        ]
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "goodrx-drug-prices-scraper",
      "title": "GoodRx Drug Prices Scraper",
      "category": "health-prices",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/goodrx-drug-prices-scraper/call",
      "path": "/api/actors/goodrx-drug-prices-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.05",
        "max": "1.25"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull GoodRx run for public prescription price comparisons by drug, ZIP code, pharmacy, quantity, and delivery mode.",
      "tags": [
        "goodrx",
        "drug prices",
        "pharmacy",
        "healthcare"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "GoodRx Drug Prices Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "drugNames": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "drugName": {
                "type": "string"
              },
              "zips": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "zip": {
                "type": "string"
              },
              "quantity": {
                "type": "integer",
                "minimum": 1
              },
              "deliveryType": {
                "type": "string",
                "enum": [
                  "pickup",
                  "mail",
                  "all"
                ]
              },
              "includeCoupons": {
                "type": "boolean",
                "default": true
              },
              "maxOffersPerDrugZip": {
                "type": "integer",
                "minimum": 1,
                "maximum": 50
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "crowdpull-ziprecruiter-jobs-scraper",
      "title": "ZipRecruiter Jobs Scraper",
      "category": "jobs-hiring",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/crowdpull-ziprecruiter-jobs-scraper/call",
      "path": "/api/actors/crowdpull-ziprecruiter-jobs-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.05",
        "max": "1.25"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull ZipRecruiter run for public job listings by keyword, location, remote filter, salary fields, and apply links.",
      "tags": [
        "jobs",
        "ziprecruiter",
        "hiring",
        "labor market"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "ZipRecruiter Jobs Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "remote": {
                "type": "boolean"
              },
              "salaryMin": {
                "type": "integer",
                "minimum": 0
              },
              "maxPages": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "facebook-comment-scraper",
      "title": "Facebook Comment Scraper",
      "category": "facebook-data",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/facebook-comment-scraper/call",
      "path": "/api/actors/facebook-comment-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.04",
        "max": "1.25"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull Facebook Comment run for public comments and replies from supported public Facebook posts.",
      "tags": [
        "facebook",
        "comments",
        "social listening",
        "sentiment"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Facebook Comment Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "postUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "maxComments": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250
              },
              "includeReplies": {
                "type": "boolean",
                "default": true
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "facebook-group-posts-scraper",
      "title": "Facebook Group Posts Scraper",
      "category": "facebook-data",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/facebook-group-posts-scraper/call",
      "path": "/api/actors/facebook-group-posts-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.04",
        "max": "1.25"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull Facebook Group Posts run for posts from supported public Facebook group pages.",
      "tags": [
        "facebook",
        "groups",
        "posts",
        "social listening"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Facebook Group Posts Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "groupUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "maxPosts": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250
              },
              "sinceDate": {
                "type": "string"
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "facebook-page-posts-scraper",
      "title": "Facebook Page Posts Scraper",
      "category": "facebook-data",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/facebook-page-posts-scraper/call",
      "path": "/api/actors/facebook-page-posts-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.04",
        "max": "1.25"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull Facebook Page Posts run for public page and profile posts with date filtering and source URLs.",
      "tags": [
        "facebook",
        "pages",
        "posts",
        "brand monitoring"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Facebook Page Posts Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "pageUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "maxPosts": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250
              },
              "sinceDate": {
                "type": "string"
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "facebook-profile-scraper",
      "title": "Facebook Profile Scraper",
      "category": "facebook-data",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/facebook-profile-scraper/call",
      "path": "/api/actors/facebook-profile-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.04",
        "max": "1.25"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull Facebook Profile run for public profile posts, reactions, images, and source URLs where publicly visible.",
      "tags": [
        "facebook",
        "profiles",
        "public posts",
        "social research"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Facebook Profile Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "profileUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "maxPosts": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250
              },
              "sinceDate": {
                "type": "string"
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "instagram-scraper",
      "title": "Instagram Scraper",
      "category": "social-video-intelligence",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/instagram-scraper/call",
      "path": "/api/actors/instagram-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.05",
        "max": "1.50"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull Instagram run for public profiles, posts, reels, comments, hashtags, places, and tagged-mention workflows where supported.",
      "tags": [
        "instagram",
        "social listening",
        "creators",
        "hashtags"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "Instagram Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "usernames": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "hashtags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "places": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "maxPosts": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "youtube-scraper-intelligence",
      "title": "YouTube Scraper Intelligence",
      "category": "social-video-intelligence",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/youtube-scraper-intelligence/call",
      "path": "/api/actors/youtube-scraper-intelligence/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.05",
        "max": "1.50"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull YouTube run for public videos, Shorts, streams, channels, playlists, search results, subtitles, comments, and transcript records.",
      "tags": [
        "youtube",
        "transcripts",
        "comments",
        "video intelligence"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "YouTube Scraper Intelligence input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "videoUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "channelUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "playlistUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "includeSubtitles": {
                "type": "boolean",
                "default": true
              },
              "includeComments": {
                "type": "boolean",
                "default": false
              },
              "maxVideos": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    },
    {
      "name": "osha-violations-scraper",
      "title": "OSHA Violations Scraper",
      "category": "public-records",
      "kind": "source-call",
      "method": "POST",
      "url": "https://crowdpull.click/api/actors/osha-violations-scraper/call",
      "path": "/api/actors/osha-violations-scraper/call",
      "price": {
        "mode": "dynamic",
        "currency": "USD",
        "min": "0.05",
        "max": "1.25"
      },
      "x402": true,
      "configured": true,
      "description": "Start a capped CrowdPull OSHA run for public violation records used in compliance, account scoring, and risk research workflows.",
      "tags": [
        "osha",
        "public records",
        "compliance",
        "risk"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "description": "OSHA Violations Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
            "required": [],
            "properties": {
              "startUrls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public source URLs to collect from."
              },
              "urls": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Public URLs accepted by the selected source."
              },
              "url": {
                "type": "string",
                "description": "Single public URL accepted by the selected source."
              },
              "query": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "searchQuery": {
                "type": "string",
                "description": "Search query or keyword."
              },
              "location": {
                "type": "string",
                "description": "City, ZIP, state, neighborhood, or source-supported location."
              },
              "maxItems": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxResults": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "maxListings": {
                "type": "integer",
                "minimum": 1,
                "maximum": 250,
                "default": 25
              },
              "includeDetails": {
                "type": "boolean",
                "default": false
              },
              "establishmentName": {
                "type": "string"
              },
              "state": {
                "type": "string"
              },
              "fromDate": {
                "type": "string"
              },
              "toDate": {
                "type": "string"
              }
            },
            "additionalProperties": true
          },
          "options": {
            "type": "object",
            "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
            "properties": {
              "build": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "memory": {
                "type": "integer",
                "minimum": 128,
                "maximum": 8192
              },
              "waitForFinishSeconds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 60,
                "default": 10
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "https://crowdpull.click/openapi.json#/components/schemas/CrowdPullJob"
      },
      "execution": {
        "strategy": "managed-backend",
        "nativeCandidate": false,
        "fallback": "managed-backend",
        "routingSignals": []
      },
      "workflow": "POST input to start a job, then poll /api/actors/status and fetch /api/actors/results with the returned token."
    }
  ],
  "recommendedWorkflows": [
    {
      "name": "marketplace.search",
      "title": "Marketplace lead search",
      "description": "Start with Facebook Marketplace, OfferUp, Craigslist, or Mercari for local resale and classified leads. Combine rows by source URL, listing ID, title, price, and location.",
      "sources": [
        "facebook-marketplace-scraper",
        "offerup-scraper",
        "craigslist-scraper",
        "mercari-listings-scraper"
      ],
      "workflow": "marketplace-leads",
      "priceUsd": {
        "typical": "0.05-0.35 per source call",
        "multiSource": "0.20-1.00 depending on limits and detail fetches"
      },
      "routes": [
        "https://crowdpull.click/api/actors/facebook-marketplace-scraper/call",
        "https://crowdpull.click/api/actors/offerup-scraper/call",
        "https://crowdpull.click/api/actors/craigslist-scraper/call",
        "https://crowdpull.click/api/actors/mercari-listings-scraper/call"
      ],
      "bundleRoute": "https://crowdpull.click/api/workflows/marketplace-leads"
    },
    {
      "name": "rentals.comps",
      "title": "Rental and property comps",
      "description": "Use Zillow and Apartments.com for public housing inventory, rent, price, bedroom, amenity, and source URL comparison.",
      "sources": [
        "zillow-listings-scraper",
        "apartments-com-rentals-scraper"
      ],
      "workflow": "rental-comps",
      "priceUsd": {
        "typical": "0.05-0.75 per source call"
      },
      "routes": [
        "https://crowdpull.click/api/actors/zillow-listings-scraper/call",
        "https://crowdpull.click/api/actors/apartments-com-rentals-scraper/call"
      ],
      "bundleRoute": "https://crowdpull.click/api/workflows/rental-comps"
    },
    {
      "name": "reviews.sentiment",
      "title": "Product review and price research",
      "description": "Use AliExpress reviews for complaint mining, Target or Flipkart for product and price checks, and keep product IDs/source URLs attached.",
      "sources": [
        "aliexpress-reviews-scraper",
        "target-products-scraper",
        "flipkart-products-scraper"
      ],
      "workflow": "review-complaints",
      "priceUsd": {
        "typical": "0.03-0.50 per source call"
      },
      "routes": [
        "https://crowdpull.click/api/actors/aliexpress-reviews-scraper/call",
        "https://crowdpull.click/api/actors/target-products-scraper/call",
        "https://crowdpull.click/api/actors/flipkart-products-scraper/call"
      ],
      "bundleRoute": "https://crowdpull.click/api/workflows/review-complaints"
    },
    {
      "name": "jobs.leads",
      "title": "Hiring signal search",
      "description": "Use ZipRecruiter public job listings to find companies hiring for a role, then export title, company, location, salary fields, remote flag, apply URL, and source URL.",
      "sources": [
        "crowdpull-ziprecruiter-jobs-scraper"
      ],
      "workflow": "hiring-signals",
      "priceUsd": {
        "typical": "0.05-0.75 per call"
      },
      "routes": [
        "https://crowdpull.click/api/actors/crowdpull-ziprecruiter-jobs-scraper/call"
      ],
      "bundleRoute": "https://crowdpull.click/api/workflows/hiring-signals"
    }
  ],
  "executionBackends": {
    "current": "profitability-router",
    "target": "choose the highest expected-margin backend with managed fallback when reliable and profitable",
    "routerMode": "profit",
    "minimumMarginUsd": "0.005",
    "nativeCandidateSources": [
      "offerup-scraper",
      "craigslist-scraper",
      "aliexpress-reviews-scraper",
      "target-products-scraper",
      "flipkart-products-scraper"
    ],
    "fallbackPolicy": "Native runners can be enabled per source with CROWDPULL_NATIVE_RUNNER_URL. The router compares estimated native cost against managed execution cost and picks the best expected margin. If the chosen backend fails and fallback is enabled, CrowdPull tries the next profitable backend while keeping the public result shape stable."
  },
  "guidance": [
    "Use /api/directory for the compact menu and /openapi.json for schemas.",
    "Use /api/workflows/* when the buyer wants a finished outcome instead of one raw source call.",
    "Use /api/enrich/rows when you already have rows and only need dedupe, scoring, and light classification.",
    "For a paid source call, send the intended input without payment first to receive a 402 quote with the exact x402 amount.",
    "After paying and starting a job, keep the returned token. Poll the matching status endpoint, then fetch results.",
    "For broad marketplace tasks, try /api/instant/marketplace-leads first, then refresh live with /api/workflows/marketplace-leads on cache miss."
  ],
  "seeAlso": [
    "https://crowdpull.click/openapi.json",
    "https://crowdpull.click/.well-known/x402",
    "https://crowdpull.click/llms.txt",
    "https://crowdpull.click/.well-known/mcp/server-card.json",
    "https://crowdpull.click/data/crowdpull-actors.json"
  ]
}