Daily NBA and NFL player props brief in Notion
Every morning, get a Notion page that compares player prop lines across sportsbooks and flags where the books disagree, so you can shop the best number before lock.
Build me a daily NBA and NFL player props research brief that publishes to Notion every morning.
Trigger: cron, every day at 11:00am in my local time zone.
Each run, do the following:
1) Use The Odds API "List Events" to fetch upcoming events for sport keys basketball_nba and americanfootball_nfl that start in the next 24 hours. "List Events" costs no quota, so use it first to get the event IDs and only pay credits for events that are actually upcoming.
2) For each event returned, call The Odds API "Get Event Odds" with regions=us,us2 and the relevant player prop markets:
NBA markets: player_points, player_rebounds, player_assists, player_threes.
NFL markets: player_pass_yds, player_rush_yds, player_receptions, player_anytime_td.
Use oddsFormat=american. Be deliberate about credit cost: player props are the highest-credit-cost markets the API offers (cost scales with regions x markets x events), so do not fan out to extra markets or regions unless I ask. If The Odds API returns a 429 with EXCEEDED_FREQ_LIMIT, back off and retry; if it returns OUT_OF_USAGE_CREDITS, stop and surface that in the Notion page rather than silently failing.
3) For each prop (player + market + line), find:
- the best over price across all bookmakers (highest American odds for Over),
- the best under price across all bookmakers (highest American odds for Under),
- the no-vig fair price implied by each individual book, and the spread between the highest and lowest book on that prop.
Skip any prop where fewer than two bookmakers offer a line — there is nothing to compare. Flag a prop as "meaningful disagreement" when the no-vig fair lines between books differ by more than a configurable threshold (default: roughly 3 cents of no-vig probability, or whatever you judge to be a sharp gap given the market). For flagged props, write a one or two sentence take on what the spread between books suggests (e.g. one book is slow to react to news, or there is a real difference of opinion on the player).
4) Publish the results as one new Notion page using "Create a Page" into a Notion database that I will configure (ask me for the database ID during setup). Title the page "Player Props Brief — {YYYY-MM-DD}" in my local time zone. Inside the page, structure the content as:
- A short header summarizing how many games were covered, how many props passed the two-book minimum, and how many were flagged for disagreement.
- One H2 section per game, formatted as "Away @ Home — start time in my local time zone".
- Inside each game section, one table per market (Points, Rebounds, Assists, Threes for NBA; Pass Yards, Rush Yards, Receptions, Anytime TD for NFL). Each table row is one player with columns: Player, Line, Best Over (price + book), Best Under (price + book), Book Spread, Flag.
- Below each game section, a callout block listing the flagged props with the one or two sentence take.
Use Notion's standard block types (heading_2, table, callout, paragraph). Keep formatting clean and scannable — this is a research doc I will read on my phone before lines lock.
5) If on a given day there are no upcoming NBA or NFL games in the next 24 hours (off-season, all-star break, etc.), still create the daily Notion page but with a single short paragraph saying so. Do not silently skip the run.
During setup, ask me for: the Notion database ID where pages should land, my time zone, and whether I want to narrow the bookmaker list (otherwise use every US book The Odds API returns for the us and us2 regions).
Additional information
What does this prompt do?
- Each morning, pulls the NBA and NFL games starting in the next 24 hours and gathers player prop lines from US sportsbooks.
- Covers the markets bettors actually shop: NBA points, rebounds, assists, threes, and NFL pass yards, rush yards, receptions, and anytime touchdown.
- Finds the best over price and the best under price for each prop, then highlights props where the books disagree enough to be worth a second look.
- Publishes one tidy Notion page per day with a section for every game and a clean table of props, so you can scan and decide before lines move.
What do I need to use this?
- A subscription to The Odds API with enough monthly credits to cover player prop markets (these are the highest-cost markets, so a paid plan is recommended).
- A Notion workspace with a database where the daily brief should land, shared with your Notion connection.
- Your local time zone so the brief lands when you actually want to read it.
How can I customize it?
- Change the delivery time or run it twice a day if you like a midday refresh closer to tip-off and kickoff.
- Add or drop markets: keep it tight with just points and pass yards, or expand to threes, rebounds, receptions, and anytime touchdowns.
- Narrow the books to just the ones you have accounts with, or open it up to every US sportsbook for the widest price shop.
- Adjust how aggressive the disagreement flag is, so only the sharpest gaps between books get called out.
Frequently asked questions
Does this place bets for me?
Which sportsbooks does it compare?
Why player props specifically?
What if a prop only has one book offering a line?
Can I run this for the NHL, MLB, or college games too?
Stop tab-hopping between sportsbooks every morning.
Connect The Odds API and Notion once, and Geni delivers a clean player props brief to your workspace every day at 11am.