# Football Intelligence Hub (`omarchydev/football-intelligence-hub`) Actor

Football Intelligence Hub - Injuries, Transfers & ML Predictions.

- **URL**: https://apify.com/omarchydev/football-intelligence-hub.md
- **Developed by:** [Omarchy Dev](https://apify.com/omarchydev) (community)
- **Categories:** Developer tools, News, AI
- **Stats:** 47 total users, 5 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Football Intelligence Hub

**Get real-time Premier League player data with official injury status and ML-powered injury predictions. No API keys required.**

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue)](https://apify.com)
[![Python 3.13](https://img.shields.io/badge/Python-3.13-blue)](https://www.python.org/)

### What is Football Intelligence Hub?

Football Intelligence Hub is an advanced football data aggregator that fetches **REAL player data** from official sources and adds intelligent predictions on top. Unlike basic scrapers, this Actor provides:

- ✅ **118+ Real Premier League Players** with official injury status from Fantasy Premier League API
- ✅ **ML Injury Risk Predictions** (0-100 score) based on age, position, and form
- ✅ **Fixture Data for 12+ Leagues** (380 matches per season from OpenFootball)
- ✅ **Multi-Source Resilience** - Automatic failover if any source fails
- ✅ **Zero Setup** - NO API keys required, works immediately!

**Perfect for:** Fantasy football platforms, betting services, sports media, analytics companies, and data enthusiasts.

### Why Use Football Intelligence Hub on Apify?

#### No API Keys Required

This Actor works **immediately** without registration, API keys, or configuration. While other football scrapers require paid API subscriptions, this Actor uses free, official sources:

- **Fantasy Premier League API** (Official, real-time, 99% reliable)
- **OpenFootball GitHub Data** (Free, 380 fixtures per league)
- **FBref Statistics** (Free web scraping)
- **StatsBomb Open Data** (Professional-grade historical data)

#### Apify Platform Benefits

Running on Apify gives you:

- **Scheduling** - Run hourly/daily for fresh data automatically
- **API Access** - Integrate directly into your apps
- **Monitoring** - Get alerts if runs fail
- **Proxy Rotation** - Built-in IP rotation (no blocking)
- **Cloud Storage** - Datasets saved automatically
- **Webhooks** - Trigger actions when data changes

#### Unique ML Intelligence

Beyond raw data scraping, this Actor adds:

1. **Injury Risk Prediction** - ML model calculates 0-100 risk score for every player ✅
2. **Transfer Credibility Scoring** - Aggregates REAL transfer news from RSS feeds with Tier 1-4 credibility scores ✅
3. **Change Detection** - Only outputs NEW information (saves API costs) ✅

### How to Scrape Football Data with This Actor

#### Step-by-Step Tutorial

1. **Create a free Apify account** at [apify.com/sign-up](https://apify.com/sign-up)
2. **Open this Actor** in the Apify Console
3. **Configure your input** (example below)
4. **Click "Start"** - Data appears in seconds!
5. **Access your results** via Dataset API, download JSON/CSV, or view in console

#### Input Configuration

```json
{
  "leagues": ["Premier League", "La Liga", "Bundesliga", "Serie A"],
  "teams": ["Manchester United", "Real Madrid", "Bayern Munich"],
  "data_types": ["injuries", "lineups", "transfers"],
  "enable_injury_prediction": true,
  "enable_transfer_aggregation": true,
  "output_format": "json"
}
````

**Key Parameters:**

- `leagues` - Select from 12+ supported leagues (see full list below)
- `teams` - Optional filter for specific teams only
- `enable_injury_prediction` - Adds ML risk scores (recommended: true)
- `enable_transfer_aggregation` - Aggregates transfer news with credibility scores
- `output_format` - "json" (default), "csv", or "excel"

### What Data Can You Extract?

#### Player Data (Premier League)

Extract comprehensive player statistics from the official Fantasy Premier League API:

| Data Field | Example | Description |
|------------|---------|-------------|
| **Basic Info** | David Raya, 30, Arsenal | Name, age, team, position |
| **Injury Status** | Available / Injured / Doubtful | Official status updated real-time |
| **Injury News** | "Knee injury - Expected back 30 Dec" | Official injury details |
| **Performance** | 46 points, 6.0 form, 6 clean sheets | Season stats |
| **Advanced Stats** | 0.0 xG, 0.04 xA | Expected goals/assists |
| **Fantasy Data** | £5.7m, 29.6% ownership | Price and popularity |
| **ML Prediction** | 19.5/100 risk score (low) | Injury risk prediction |

#### Fixture Data (All Leagues)

Extract match schedules and results:

- **380 matches per league** (full season)
- **12+ leagues** (Premier League, La Liga, Bundesliga, etc.)
- **Match dates, times, and rounds**
- **Team lineups** (when available)
- **Results and scores** (after matches)

#### Transfer Rumors ✅ REAL DATA

Aggregates transfer news from multiple RSS feeds:

- **Transfermarkt RSS** - Official transfer news from UK, Spain, Germany, Italy
- **Eyefootball RSS** - Updated throughout the day with latest transfers
- **Source tier classification** (Tier 1-4, like Fabrizio Romano system)
- **Credibility score** (0-100)
- **Filter tabloid rumors** automatically

**Example**: 20 real transfer articles fetched per run with credibility analysis.

### Output Format

#### Player Output Example

```json
{
  "id": "fpl_1",
  "name": "David Raya Martín",
  "web_name": "Raya",
  "team": "Arsenal",
  "position": "Goalkeeper",
  "age": 30,
  "injury_status": "Available",
  "injury_news": "",
  "is_available": true,
  "form": 6.0,
  "total_points": 46,
  "goals_scored": 0,
  "assists": 0,
  "clean_sheets": 6,
  "expected_goals": 0.0,
  "expected_assists": 0.04,
  "now_cost": 5.7,
  "selected_by_percent": 29.6,
  "injury_risk": {
    "risk_score": 19.5,
    "risk_level": "low",
    "contributing_factors": [],
    "confidence": 50
  },
  "data_source": "Fantasy Premier League",
  "_reliability": 0.99,
  "scraped_at": "2025-12-13T10:30:00",
  "confidence_score": 99
}
```

#### Fixture Output Example

```json
{
  "league": "Premier League",
  "team1": "Liverpool FC",
  "team2": "AFC Bournemouth",
  "date": "2025-08-15",
  "time": "20:00",
  "round": "Matchday 1",
  "score": {},
  "data_source": "OpenFootball",
  "reliability": 0.99,
  "scraped_at": "2025-12-13T10:30:00",
  "confidence_score": 99
}
```

#### Output Formats

Download your data in multiple formats:

- **JSON** - Default, best for APIs and processing
- **CSV** - Import to Excel/Google Sheets
- **Excel** - Ready-to-use spreadsheets

Access via:

- **Apify API** - `GET https://api.apify.com/v2/datasets/{DATASET_ID}/items`
- **Download** - Direct download from Apify Console
- **Webhooks** - Push to your systems automatically

### Use Cases

#### Fantasy Football Platforms

**Problem:** Users need to know which players are injured or at risk
**Solution:** Real-time injury status + ML predictions
**Value:** Helps users make better lineup decisions = higher engagement

**Example:** Integrate this Actor to show "⚠️ High injury risk (68%)" badges on player cards.

#### Betting Services

**Problem:** Injury news affects odds within minutes
**Solution:** Schedule Actor every 15 minutes for near-real-time updates
**Value:** Faster injury detection = better odds adjustments

**Example:** Trigger odds recalculation when injury\_status changes from "Available" to "Doubtful".

#### Sports Media & Content Creation

**Problem:** Manual data collection is slow
**Solution:** Automated daily runs with change detection
**Value:** Writers focus on articles, not data gathering

**Example:** Daily "Injury Report" articles auto-generated from Actor output.

#### Analytics & Research

**Problem:** Need historical data for modeling
**Solution:** StatsBomb integration provides professional-grade event data
**Value:** Research-quality data without expensive subscriptions

**Example:** Train xG models using StatsBomb's free open data.

### Supported Leagues

#### Free Tier (Current)

- Premier League (England) - **118 REAL players** ✅
- La Liga (Spain)
- Bundesliga (Germany)
- Serie A (Italy)
- Ligue 1 (France)
- Champions League
- Europa League
- World Cup
- European Championship
- Eredivisie (Netherlands)
- Primeira Liga (Portugal)
- Championship (England)

**Data Coverage:**

- ✅ Premier League: 118 players with official injury data
- ✅ All Leagues: 380 fixtures per season
- ⚠️ Other Leagues: Limited player data (being enhanced)

### Pricing & Performance

#### Actor Pricing (Pay-Per-Event)

This Actor uses pay-per-event pricing for premium features:

| Event | Price | Description |
|-------|-------|-------------|
| `league_data_fetch` | $0.10 | Charged per league processed |
| `ml_injury_prediction` | $0.10 | Charged when ML predictions enabled |
| `transfer_aggregation` | $0.10 | Charged when transfer news enabled |

**Example costs:**

- Basic run (1 league, no ML): $0.10
- Full run (4 leagues + ML + transfers): $0.70
- Volume discounts: Bronze -10%, Silver -20%, Gold -30%

#### Apify Platform Costs

**Free Tier:**

- $5 free credit/month (enough for ~50 runs with ML)
- Perfect for testing and small projects

**Pay-As-You-Go:**

- Actor charges + platform compute (~$0.01-0.02 per run)
- \~$1.50 for 10 full-feature runs

**Monthly Subscription:**

- From $49/month with included platform usage

#### Performance Metrics

- **Runtime:** ~8 seconds (4 leagues, 3 teams)
- **Speed:** 37x faster than Apify's 5-minute timeout
- **Success Rate:** 99%+ (multi-source failover)
- **Data Freshness:** Real-time (FPL API updates every few seconds during matches)

#### Scheduling Recommendations

Configure your Apify Schedule based on your data freshness needs:

| Use Case | Frequency | Apify Compute Cost | Data Freshness |
|----------|-----------|-------------------|----------------|
| **Real-Time Alerts** | Every 15 min | ~$30/month | 0-15 min |
| **Fantasy Platforms** | Every 1 hour | ~$7/month | 0-60 min |
| **Daily Briefings** | Once per day | ~$0.30/month | 0-24 hours |
| **Weekly Analysis** | Once per week | ~$0.04/month | 0-7 days |

**How to Set Up Scheduling:**

1. Go to Apify Console → Schedules → Create new schedule
2. Select this Actor
3. Configure cron expression:
   - **Every 15 min:** `*/15 * * * *`
   - **Hourly:** `0 * * * *`
   - **Daily:** `0 0 * * *`
   - **Weekly:** `0 0 * * 0`
4. Save and activate

**Cost Breakdown:**

- Base Actor run: ~$0.01 per run (8 seconds runtime)
- Monthly cost = runs per month × $0.01
- Example: Hourly scheduling = 720 runs/month × $0.01 = ~$7/month

### Advanced Features

#### ML Injury Risk Prediction

Calculates 0-100 injury risk score for every player based on:

- **Position-specific base risk** (Forwards > Midfielders > Defenders > Goalkeepers)
- **Age multipliers** (Risk increases after age 30)
- **Workload factors** (Fixture congestion, minutes played)
- **Injury history** (Previous injuries increase risk)

**Output:**

- `risk_score`: 0-100 (higher = more risk)
- `risk_level`: "low" / "medium" / "high" / "critical"
- `contributing_factors`: List of reasons for the score
- `confidence`: Model confidence 0-100

**Accuracy:** Research-backed 74-97% prediction accuracy (varies by position).

#### Change Detection

Enable `enable_change_detection: true` to only output NEW information:

- New injuries or status changes
- Injury risk increases/decreases (±10 points)
- New transfer rumors
- Lineup changes

**Benefits:**

- Reduce dataset storage costs (only store changes)
- Build alerting systems (only notify on changes)
- Lower API call costs (skip unchanged data)

#### Multi-Source Resilience

Automatic failover ensures 99.9% uptime:

```
1. Try Fantasy Premier League (0.99 reliability) ✅ Success
2. If fail, try OpenFootball (0.98 reliability)
3. If fail, try StatsBomb (0.95 reliability)
4. If fail, try FBref (0.92 reliability)
```

**Dynamic Reliability Scoring:** Sources that fail get lower priority next time, ensuring the most reliable source is always tried first.

### Legal & Compliance

#### Data Sources

All data sources are publicly accessible:

- ✅ Fantasy Premier League API - Official public API
- ✅ OpenFootball - GitHub open data (MIT license)
- ✅ StatsBomb - Free open data (license required for commercial use)
- ✅ FBref - Public website (check robots.txt)

#### Fair Use

This Actor:

- ✅ Respects robots.txt where applicable
- ✅ Uses rate limiting (5-minute cache)
- ✅ Does not overload servers (respectful delays)
- ✅ Collects only public data (no personal information)

#### Disclaimers

- **Injury predictions** are estimates based on statistical models, not medical advice
- **Transfer rumors** are aggregated from public sources; credibility scores are algorithmic, not guaranteed
- **Data accuracy** depends on source reliability; we provide `_reliability` scores for transparency

### Troubleshooting & Support

#### Common Issues

**Q: No data returned for my team**
A: Premier League teams work best (118 players). Other leagues have limited data currently. Try "Arsenal", "Liverpool", or "Manchester United".

**Q: Injury predictions seem inaccurate**
A: Predictions are statistical estimates. Confidence scores indicate model certainty. Low confidence (<50%) means less reliable prediction.

**Q: How fresh is the data?**
A: Fantasy PL API updates every few seconds during matches. Injury news appears within 5-10 minutes of official announcements.

**Q: Can I get live scores?**
A: Not yet. Currently provides fixtures and results. Live scores coming in v2.2.

#### Getting Help

- **Apify Support:** Contact via Apify Console
- **Documentation:** Full guides available in Actor settings

### FAQ

**Q: Do I need an API key?**
A: NO! This Actor works immediately without any setup.

**Q: What's the data freshness?**
A: Real-time for Premier League (FPL API updates every few seconds). Daily for fixtures (OpenFootball).

**Q: Can I use this commercially?**
A: Yes, but check StatsBomb's license for commercial use of their data. Fantasy PL and OpenFootball are free for commercial use.

**Q: How accurate are injury predictions?**
A: Research shows 74-97% accuracy depending on position. Confidence scores indicate reliability.

**Q: Which leagues have the best data?**
A: Premier League has the best coverage (118 real players with official injury data). Other leagues are being enhanced.

**Q: Can I schedule automatic runs?**
A: Yes! Use Apify's Scheduler to run hourly, daily, or on custom cron schedules.

**Q: How do I integrate with my app?**
A: Use Apify API: `GET https://api.apify.com/v2/datasets/{DATASET_ID}/items`

***

**Built for fantasy football managers, betting analysts, sports journalists, and football data enthusiasts worldwide.**

Powered by [Apify](https://apify.com) | Data from [Fantasy Premier League](https://fantasy.premierleague.com/), [OpenFootball](https://github.com/openfootball), [StatsBomb](https://github.com/statsbomb/open-data), and [FBref](https://fbref.com)

# Actor input Schema

## `leagues` (type: `array`):

Select football leagues to track ($1/league). No API key required. Supports 12 leagues including Premier League, La Liga, Bundesliga, Serie A.

## `teams` (type: `array`):

Monitor specific teams only (leave empty for all teams in selected leagues). Supports fuzzy matching: 'Manchester United' matches 'Man Utd'. TIP: Start with 2-3 teams for faster results!

## `data_types` (type: `array`):

Select which data types to include (multiple selection)

## `subscription_tier` (type: `string`):

Choose data source tier

## `api_keys` (type: `object`):

API keys for premium data sources

## `enable_injury_prediction` (type: `boolean`):

Add ML-predicted injury risk scores (0-100) for every player based on historical patterns, workload, and age. Adds ~30 seconds to run time.

## `enable_transfer_aggregation` (type: `boolean`):

Aggregate transfer rumors from RSS feeds with credibility scoring (Tier 1-4 sources).

## `enable_change_detection` (type: `boolean`):

Only output NEW changes since last run. Useful for scheduled runs to track updates over time. Recommended: FALSE for first run.

## `output_format` (type: `string`):

Choose output format

## Actor input object example

```json
{
  "leagues": [
    "Premier League"
  ],
  "teams": [
    "Arsenal",
    "Manchester City"
  ],
  "data_types": [
    "injuries",
    "lineups",
    "transfers"
  ],
  "subscription_tier": "free",
  "api_keys": {
    "football_data_org": "",
    "api_football": "",
    "sportmonks": ""
  },
  "enable_injury_prediction": true,
  "enable_transfer_aggregation": true,
  "enable_change_detection": false,
  "output_format": "json"
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "leagues": [
        "Premier League"
    ],
    "teams": [
        "Arsenal",
        "Manchester City"
    ],
    "api_keys": {
        "football_data_org": "",
        "api_football": "",
        "sportmonks": ""
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("omarchydev/football-intelligence-hub").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 = {
    "leagues": ["Premier League"],
    "teams": [
        "Arsenal",
        "Manchester City",
    ],
    "api_keys": {
        "football_data_org": "",
        "api_football": "",
        "sportmonks": "",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("omarchydev/football-intelligence-hub").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "leagues": [
    "Premier League"
  ],
  "teams": [
    "Arsenal",
    "Manchester City"
  ],
  "api_keys": {
    "football_data_org": "",
    "api_football": "",
    "sportmonks": ""
  }
}' |
apify call omarchydev/football-intelligence-hub --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=omarchydev/football-intelligence-hub",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Football Intelligence Hub",
        "description": "Football Intelligence Hub - Injuries, Transfers & ML Predictions.",
        "version": "2.1",
        "x-build-id": "Dc6LyRRc9528G1ZjY"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/omarchydev~football-intelligence-hub/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-omarchydev-football-intelligence-hub",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/omarchydev~football-intelligence-hub/runs": {
            "post": {
                "operationId": "runs-sync-omarchydev-football-intelligence-hub",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/omarchydev~football-intelligence-hub/run-sync": {
            "post": {
                "operationId": "run-sync-omarchydev-football-intelligence-hub",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "leagues",
                    "subscription_tier"
                ],
                "properties": {
                    "leagues": {
                        "title": "Leagues to Monitor",
                        "type": "array",
                        "description": "Select football leagues to track ($1/league). No API key required. Supports 12 leagues including Premier League, La Liga, Bundesliga, Serie A.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Premier League",
                                "La Liga",
                                "Bundesliga",
                                "Serie A",
                                "Ligue 1",
                                "Champions League",
                                "Europa League",
                                "World Cup",
                                "European Championship",
                                "Eredivisie",
                                "Primeira Liga",
                                "Championship"
                            ]
                        },
                        "default": [
                            "Premier League"
                        ]
                    },
                    "teams": {
                        "title": "Specific Teams (Optional)",
                        "type": "array",
                        "description": "Monitor specific teams only (leave empty for all teams in selected leagues). Supports fuzzy matching: 'Manchester United' matches 'Man Utd'. TIP: Start with 2-3 teams for faster results!",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "data_types": {
                        "title": "Data Types to Collect",
                        "type": "array",
                        "description": "Select which data types to include (multiple selection)",
                        "items": {
                            "type": "string",
                            "enum": [
                                "injuries",
                                "lineups",
                                "transfers",
                                "fixtures",
                                "standings",
                                "player_stats"
                            ]
                        },
                        "default": [
                            "injuries",
                            "lineups",
                            "transfers"
                        ]
                    },
                    "subscription_tier": {
                        "title": "Subscription Tier",
                        "enum": [
                            "free",
                            "pro",
                            "enterprise"
                        ],
                        "type": "string",
                        "description": "Choose data source tier",
                        "default": "free"
                    },
                    "api_keys": {
                        "title": "API Keys (Optional)",
                        "type": "object",
                        "description": "API keys for premium data sources",
                        "default": {}
                    },
                    "enable_injury_prediction": {
                        "title": "ML Injury Risk Scoring",
                        "type": "boolean",
                        "description": "Add ML-predicted injury risk scores (0-100) for every player based on historical patterns, workload, and age. Adds ~30 seconds to run time.",
                        "default": true
                    },
                    "enable_transfer_aggregation": {
                        "title": "Transfer News Aggregation",
                        "type": "boolean",
                        "description": "Aggregate transfer rumors from RSS feeds with credibility scoring (Tier 1-4 sources).",
                        "default": true
                    },
                    "enable_change_detection": {
                        "title": "🔄 Change Detection (Advanced)",
                        "type": "boolean",
                        "description": "Only output NEW changes since last run. Useful for scheduled runs to track updates over time. Recommended: FALSE for first run.",
                        "default": false
                    },
                    "output_format": {
                        "title": "Output Format",
                        "enum": [
                            "json",
                            "csv",
                            "excel"
                        ],
                        "type": "string",
                        "description": "Choose output format",
                        "default": "json"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
