
Website Content Crawler
scrape.ly/store/querystone/website-content-crawlerAIDeveloper tools
4 monthly users

Scrape Sleeper Picks player props: over/under lines, payout multipliers, pick popularity and counts, alternate and promo lines, last-10 recent form, game and player details for NBA, NFL, college, MLB, NHL, WNBA, soccer, tennis, golf, MMA and CS2. No login.
Get every player prop on Sleeper Picks: the over/under line, both payout multipliers, pick popularity with over and under pick counts, the player's last 10 results for that stat, and full game and player details. NBA, NFL, college football, MLB, NHL, WNBA, soccer, tennis, golf, MMA and CS2, in one run, with no login. A full NBA board (well over 1,000 lines) usually comes back in under 20 seconds, at $0.12 per 1,000 lines.
projection_id).| Field | What it does |
|---|---|
leagues | All, NBA, NFL, CFB, CBB, MLB, NHL, WNBA, PGA, MMA, Tennis, CS2, Soccer (all leagues), Soccer:EPL, Soccer:LaLiga, Soccer:Ligue1, Soccer:SerieA, Soccer:Bundesliga, Soccer:MLS, Soccer:UEFAChamps |
extraLeagues | Other leagues by the name shown in league or sport, comma-separated |
maxItems | Stop after this many lines (default 20, 0 = no limit) |
playerNames | Partial player names, accents and case ignored (Jokic matches Jokić) |
statTypes | Stat machine names or display names (points, threes_made, 3-Pointers Made) |
teams | Team codes or names; matches the player's team or either team in the game |
includeAlternateLines | Add alternate targets (off by default) |
splitAlternateLines | One row per alternate target instead of one row per alternate market |
includePromotions | Boosts, discounted lines and free picks (on by default) |
includeRecentPerformance | Last 10 results for the stat (on by default) |
{
"leagues": ["NBA", "NFL"],
"maxItems": 0,
"statTypes": "points, passing_yards",
"includeAlternateLines": true
}
One row per prop line. The main fields:
| Field | Description |
|---|---|
player_name, player_team, player_position | Who the line is on |
league, stat, stat_display | League and stat (machine name and readable name) |
line | The target value |
over_multiplier, under_multiplier | Payout multipliers for each side |
pick_popularity, pick_count_over, pick_count_under, pick_count_total, pick_over_share | How the community is picking |
line_type, is_alternate, is_promo, promotion_type, is_free_pick | Normal, alternate or promotion line |
alternate_lines | Every alternate target with its multipliers (alternate rows) |
recent_performance, recent_average, recent_over_count | Last 10 results and how many beat the line |
game_start, home_team_name, away_team_name, opponent, tv_channel, venue_name, event_name | The game or event |
player_age, player_height, player_weight, player_college, player_injury_status, player_depth_chart_position, player_image | Player details |
projection_id, over_line_id, under_line_id, game_id, player_sportradar_id | IDs to join and track lines over time |
A real row from an NBA run (trimmed):
{
"platform": "sleeper",
"league": "NBA",
"player_name": "LeBron James",
"stat": "assists",
"stat_display": "Assists",
"line": 7.5,
"over_multiplier": 1.67,
"under_multiplier": 1.9,
"pick_popularity": 0.1443932411674347,
"pick_count_over": 6,
"pick_count_under": 1,
"pick_count_total": 7,
"pick_over_share": 0.8571,
"line_type": "normal",
"is_alternate": false,
"is_promo": false,
"game_start": "2026-10-22T23:00:00+00:00",
"game_status": "pre_game",
"home_team": "PHI",
"away_team": "CLE",
"home_team_name": "Philadelphia 76ers",
"away_team_name": "Cleveland Cavaliers",
"home_team_record": "1-0",
"away_team_record": "0-0",
"opponent": "CLE",
"tv_channel": "ESPN",
"venue_name": "Xfinity Mobile Arena",
"venue_city": "Philadelphia",
"player_team": "PHI",
"player_team_name": "Philadelphia 76ers",
"player_position": "PF",
"player_jersey": 23,
"player_image": "https://sleepercdn.com/content/nba/players/thumb/1362.jpg",
"player_id": "1362",
"player_age": 41,
"player_height": "81",
"player_weight": "250",
"player_depth_chart_position": "PF",
"player_sportradar_id": "0afbe608-940a-4d5d-a1f7-468718c67d91",
"recent_performance": [{"date": "2026-10-20", "opponent": "NYK", "value": 7}],
"recent_average": 7,
"recent_over_count": 0,
"season": "2026",
"game_id": "1392938574764052480",
"projection_id": "1418762252319744001",
"over_line_id": "1418762252319744001",
"under_line_id": "1418762252319744002",
"market_type": "assists_over_under_player_1362",
"updated_at": "2026-10-21T22:29:50.576000+00:00"
}
An alternate market (trimmed):
{
"player_name": "Brandon Miller",
"league": "NBA",
"stat_display": "3-Pointers Made",
"line": 1.5,
"over_multiplier": 1.06,
"line_type": "alternate",
"alternate_lines": [
{"line": 1.5, "over_multiplier": 1.06, "under_multiplier": null},
{"line": 2.5, "over_multiplier": 1.36, "under_multiplier": null},
{"line": 4.5, "over_multiplier": 2.72, "under_multiplier": null},
{"line": 5.5, "over_multiplier": 3.81, "under_multiplier": null}
]
}
You pay $0.12 per 1,000 lines saved ($0.00012 per line). Lines removed by your filters are not charged.
Platform usage (compute and proxy traffic) is billed on top and is small: about $0.001 to $0.002 for a full NBA run and about $0.01 for the whole board with alternates in our tests.
Is it legal to scrape Sleeper? The actor reads public data that Sleeper shows to anyone, without logging in. You are responsible for how you use it: check Sleeper's terms and the laws that apply to you.
Do I need a Sleeper account, cookies or a proxy? No account and no cookies. The default datacenter proxy works well; you can also switch the proxy off or use your own.
How many lines can I get? Everything Sleeper has on the board for the leagues you pick. Set Maximum lines to 0 for all of them. The board changes during the day as Sleeper takes lines down and posts new ones.
Why is a field empty?
Sleeper does not have every detail for every sport: college and esports players have no photos, tennis, golf and MMA have no teams, pick counts only exist once users have picked, and recent performance is empty early in a season. Empty fields are null.
Can I schedule it or use the API?
Yes. Schedule runs (for example every 5 minutes on game days) and read the dataset through the API. Use projection_id to track the same line across runs.
What are pick popularity and the pick counts?
pick_popularity is Sleeper's own popularity score for the prop. pick_count_over, pick_count_under and pick_count_total are the counts Sleeper shows, and pick_over_share is over picks divided by total picks.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
leaguesarrayOptionalLeagues
Leagues to collect. Pick All leagues for the whole board. Soccer (all leagues) covers every soccer competition Sleeper lists. Boards change with the season: a league without games returns no lines and costs nothing.
extraLeaguesstringOptionalOther leagues
Leagues that are not in the list, comma-separated. Use the name shown in the league or sport field of your results (for example Soccer:Eredivisie). They work as soon as Sleeper posts lines for them.
maxItemsintegerOptionaldefault 20Maximum lines
Stop after this many lines. Set 0 to collect every line that matches (on 21 October 2026 the NBA board had about 1,600 lines and the whole board about 4,200, without alternates).
All filters are optional and combine with AND. Lines that are filtered out are not saved and not charged.
playerNamesstringOptionalPlayer names
Comma-separated player names. Case and accents do not matter, and partial names match (Jokic matches Nikola Jokić). Leave empty for every player.
statTypesstringOptionalStat types
Comma-separated stat types, by machine name or display name, for example points, assists, threes_made or 3-Pointers Made. Run once without this filter to see what the board offers today.
teamsstringOptionalTeams
Comma-separated team codes or names, for example MIA, LAL or Arsenal. A line matches when the player's team or either team in the game matches.
includeAlternateLinesbooleanOptionaldefault falseInclude alternate lines
Also collect alternate lines: the same player and stat at other targets with other multipliers (for example Points 14.5 at 1.25x or 29.5 at 4.6x). Each alternate market is one row with every target in alternate_lines.
splitAlternateLinesbooleanOptionaldefault falseOne row per alternate target
Save each alternate target as its own row instead of one row per alternate market. Every row is a charged line.
includePromotionsbooleanOptionaldefault trueInclude promotional lines
Include Sleeper's promoted lines (boosted payouts, discounted lines and free picks), marked with is_promo and promotion_type.
includeRecentPerformancebooleanOptionaldefault trueInclude recent performance
Add the player's last games for the stat (date, opponent, value), their average and how often they went over the line.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy
Datacenter proxies work well for Sleeper's public data.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| platform | any | Platform |
| league | any | League |
| sport | any | Sleeper sport code |
| player_name | any | Player |
| stat | any | Stat (machine name) |
| stat_display | any | Stat |
| line | any | Line |
| over_multiplier | any | Over multiplier |
| under_multiplier | any | Under multiplier |
| pick_popularity | any | Pick popularity |
| pick_count_over | any | Over picks |
| pick_count_under | any | Under picks |
| pick_count_total | any | Total picks |
| pick_over_share | any | Over share of picks |
| alternate_lines | any | Alternate targets |
| line_type | any | Line type |
| is_alternate | any | Alternate |
| is_promo | any | Promo |
| promotion_type | any | Promotion type |
| is_free_pick | any | Free pick |
| min_parlay_multiplier | any | Min parlay multiplier |
| status | any | Line status |
| game_start | any | Game start (UTC) |
| game_date | any | Game date |
| game_status | any | Game status |
| is_live | any | Live |
| in_game | any | In game |
| today | any | Today |
| home_team | any | Home |
| away_team | any | Away |
| home_team_name | any | Home team |
| away_team_name | any | Away team |
| home_team_record | any | Home record |
| away_team_record | any | Away record |
| opponent | any | Opponent |
| event_name | any | Event |
| golf_round | any | Golf round |
| tv_channel | any | TV |
| venue_name | any | Venue |
| venue_city | any | Venue city |
| venue_state | any | Venue state |
| venue_country | any | Venue country |
| week | any | Week |
| player_team | any | Team |
| player_team_name | any | Team name |
| player_position | any | Position |
| player_position_rank | any | Position rank |
| player_jersey | any | Jersey |
| player_image | any | Photo |
| player_id | any | Player ID |
| player_age | any | Age |
| player_height | any | Height (in) |
| player_weight | any | Weight (lb) |
| player_college | any | College |
| player_high_school | any | High school |
| player_birth_date | any | Birth date |
| player_birth_country | any | Birth country |
| player_years_exp | any | Years exp. |
| player_status | any | Player status |
| player_fantasy_positions | any | Fantasy positions |
| player_injury_status | any | Injury |
| player_injury_body_part | any | Injury body part |
| player_injury_notes | any | Injury notes |
| player_depth_chart_position | any | Depth chart position |
| player_depth_chart_order | any | Depth chart order |
| player_sportradar_id | any | Sportradar ID |
| player_espn_id | any | ESPN ID |
| player_yahoo_id | any | Yahoo ID |
| player_rotowire_id | any | Rotowire ID |
| player_fantasy_data_id | any | FantasyData ID |
| recent_performance | any | Recent games |
| recent_games | any | Recent games count |
| recent_average | any | Recent average |
| recent_over_count | any | Recent games over the line |
| season | any | Season |
| season_type | any | Season type |
| game_id | any | Game ID |
| sportradar_game_id | any | Sportradar game ID |
| projection_id | any | Line ID |
| over_line_id | any | Over line ID |
| under_line_id | any | Under line ID |
| wager_type | any | Wager type |
| market_type | any | Market type |
| subject_type | any | Subject type |
| outcome_type | any | Outcome type |
| rank | any | Board position |
| updated_at | any | Updated |
| scraped_at | any | Scraped at |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Prop line | One saved Sleeper prop line: target, over and under multipliers, pick popularity and counts, recent form, game and player details. Filtered-out lines are free. | $0.00012 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/sleeper-scraper').call({
"leagues": [
"All"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/sleeper-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=querystone/sleeper-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
No examples yet
The developer hasn't published example inputs for this actor.

Scrape Google Maps places for any search term and city, with no code or with one API call. A real run, its output, its log and its exact cost, plus the limits and the legal side.
Read the article
Paste an Amazon search or product URL into a ready-made Actor and get one row per product with price, ASIN, rating and review count. This guide covers the no-code steps, the API, ZIP code pricing, a real run and its cost.
Read the article
Scrape Google search results by query and country and get each results page as JSON: organic results with positions, People Also Ask and related searches. Run it without code or from Python, with a real run, the cost per page and Google's terms.
Read the articleScrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.