# Prediction Market Sentiment (X + Polymarket + Kalshi) (`agentready/prediction-bot`) Actor

Score what X is saying about any prediction market with Grok live search, next to live Polymarket and Kalshi odds. Sentiment about the event, not the price. Pay only per market scored.

- **URL**: https://apify.com/agentready/prediction-bot.md
- **Developed by:** [agentready](https://apify.com/agentready) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $350.00 / 1,000 market scoreds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Prediction Market Sentiment: X chatter vs. Polymarket and Kalshi odds

See what people on X are saying about any prediction market, next to what the market is pricing. Give it market questions; get back one row per market with:

- **X sentiment score** from -100 (very negative about the event happening) to +100 (very positive), scored by Grok with live X search
- **Catalyst**: one sentence on what the conversation is about right now
- **Chatter volume**: rising, falling or flat
- **Live odds**: the closest open **Polymarket** and **Kalshi** markets, with their current Yes price, bid/ask and 24-hour volume

### Why it's different

- **Sentiment about the event, not the price.** Most "prediction market sentiment" just echoes the odds back at you ("Polymarket has this at 60%"). This Actor tells Grok to ignore posts about betting odds and market prices, so the score reflects what people think about the event itself. That makes the gap between sentiment and odds meaningful.
- **Two venues in one call.** Polymarket and Kalshi matched automatically, including the year and price levels in your question (2026 won't match a 2027 market).
- **Pay only for results.** Markets that fail to score are not charged.

### Input

| Field | What it does |
| --- | --- |
| `questions` | Up to 25 market questions. Use the market's own wording for the best match. |
| `includeOdds` | Add live Polymarket and Kalshi odds (default on). |
| `includeKalshi` | Kalshi matching adds about 2 minutes per run; turn off for faster Polymarket-only runs. |

```json
{
  "questions": [
    "Will the Fed increase interest rates by 25 bps after the October 2026 meeting?",
    "US x Iran ceasefire continues through October 31?"
  ]
}
```

### Output

```json
{
  "question": "Will the Fed increase interest rates by 25 bps after the October 2026 meeting?",
  "score": 62,
  "catalyst": "Sticky inflation and officials calling another hike reasonable keep an October rise in focus.",
  "volume_signal": "rising",
  "polymarket_yes_pct": 64.5,
  "kalshi_yes_pct": 63.0,
  "polymarket_market": "Will the Fed increase interest rates by 25 bps after the October 2026 meeting?",
  "kalshi_market": "Fed decision in October 2026: Hike 25bps",
  "odds": { "polymarket": { "...": "..." }, "kalshi": { "...": "..." }, "fetched_at": "..." },
  "scored_at": "2026-09-28T14:17:00+00:00",
  "prompt_version": "v2",
  "error": null
}
```

`odds.polymarket` or `odds.kalshi` is `null` when no open market matches your question closely enough. The example values are illustrative.

### Use it from an AI agent

This Actor is available to AI agents through Apify's MCP server. Give your agent a market question; it gets back a sentiment score, catalyst and live odds in one tool call.

### Pricing

Pay per market scored. There is no charge for markets that fail to score, and a run stops at your maximum charge limit.

### Good to know

- Sentiment is a reading of public conversation, not a forecast. **This is not financial or betting advice.**
- Scores come from an AI model reading recent posts on X and can vary between runs.
- Odds are live public prices at the time of the run.

Also available as a pay-per-call API with x402 (USDC on Base): [prediction-bot-iggf.onrender.com](https://prediction-bot-iggf.onrender.com/about).

# Actor input Schema

## `questions` (type: `array`):

Prediction-market questions to score, one per line (up to 25). Use the market's own wording for the best odds match, e.g. 'Will the Fed increase interest rates by 25 bps after the October 2026 meeting?'

## `includeOdds` (type: `boolean`):

Add the closest matching open Polymarket and Kalshi markets and their current Yes prices.

## `includeKalshi` (type: `boolean`):

Kalshi has no text search, so matching builds an index of open events. This adds about 2 minutes to a run. Turn off for faster Polymarket-only runs.

## Actor input object example

```json
{
  "questions": [
    "Will the Fed increase interest rates by 25 bps after the October 2026 meeting?"
  ],
  "includeOdds": true,
  "includeKalshi": true
}
```

# Actor output Schema

## `results` (type: `string`):

One row per market: X sentiment score, catalyst, chatter volume and live Polymarket/Kalshi odds.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "questions": [
        "Will the Fed increase interest rates by 25 bps after the October 2026 meeting?"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("agentready/prediction-bot").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "questions": ["Will the Fed increase interest rates by 25 bps after the October 2026 meeting?"] }

# Run the Actor and wait for it to finish
run = client.actor("agentready/prediction-bot").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "questions": [
    "Will the Fed increase interest rates by 25 bps after the October 2026 meeting?"
  ]
}' |
apify call agentready/prediction-bot --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,agentready/prediction-bot"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/L5J6YxQg7gPk4CpP7/builds/ShANsIrmAXiy0SPPV/openapi.json
