Build an NBA news bot for X
headlines, final scores, the NBA Cup
The NBA plays almost every night from October to April, and every night ends with a stack of final scores. RSS feeds and a 30-line script post the news and the finals while you sleep, with no X developer account.
Card required, cancel any time.
The short answer
Add https://www.espn.com/espn/rss/nba/news or another working NBA feed to the OpenTweet RSS connector, write one prompt that turns each headline into a post, and set it to check every 15 minutes. For scores, read https://site.api.espn.com/apis/site/v2/sports/basketball/nba/scoreboard every 15 minutes in the evening and post every new final to POST https://opentweet.io/api/v1/posts. Write in your own words, name the source, and never repost game footage.
Basketball accounts already post through OpenTweet: in the last 30 days, paying accounts posted NBA takes, Celtics final scores ("FINAL: Celtics 98, Raptors 93") and player news. NBA news also has more search demand than any sport we have written about: on Google Trends over the last three months, "nba news" averaged about 14 times the searches for "twitter bot".
Now: NBA Cup group play ends November 27
The Emirates NBA Cup moved its final to Hinkle Fieldhouse in Indianapolis on Friday, December 11, with the quarterfinals on December 4-5. Cup group tables change every Cup night until November 27, and each one is a post: who leads each group, who is through, what the tiebreaker is. Schedule a weekly "Cup table" post now and let the score script handle the games.
Six posts an NBA account runs on
The RSS connector covers headlines, moves and player news. A small script covers final scores. Scheduled posts cover the rest.
Headline
As it breaksThe news in one sentence, player and team first, with the source. Most of a news account's posts.
Final score
Every nightScore, the winner's record, and each team's top performer. The script below writes it.
Injury report
DailyWho is out or questionable tonight, updated through the day until tip-off.
Trade and signing
As it happensWho moved, for what, and what it does to both rotations and the cap. February is the peak.
Fantasy note
Before tip-offWho is starting, who is resting, and minutes changes. Fantasy managers follow accounts for this alone.
Standings and Cup
WeeklyCup group tables in November, then the conference standings and play-in race from March.
NBA RSS feeds that work
We requested each feed with the OpenTweet connector's own User-Agent on November 12, 2026, the morning after a 10-game night. Every one below returned items.
| Source | Feed URL | Items | Note |
|---|---|---|---|
| ESPN NBA | espn.com/espn/rss/nba/news | 16 | League-wide, fast on injuries and trades |
| Yahoo Sports NBA | sports.yahoo.com/nba/rss/ | 50 | Busy; mixes news, columns and betting |
| CBS Sports NBA | cbssports.com/rss/headlines/nba/ | 36 | News plus picks and rankings, so filter. No dates in the feed |
| Hoops Rumors | hoopsrumors.com/feed | 15 | Signings, trades, waivers, two-way deals. Best for deadline day |
| RotoWire NBA player news | rotowire.com/rss/news.php?sport=NBA | 5 | Short player updates; the fantasy and injury beat |
| The Guardian NBA | theguardian.com/sport/nba/rss | 20 | Analysis and columns |
| BBC Sport basketball | feeds.bbci.co.uk/sport/basketball/rss.xml | 17 | International angle; updates a few times a week |
Did not work: NBA.com (nba.com/rss/nba_rss.xml 404, nba.com/news/rss.xml 403), HoopsHype (402), SI, Sporting News, theScore and Fox Sports (404). SB Nation team blogs (celticsblog.com, silverscreenandroll.com) returned 200 with no items. More feeds for other beats are in news RSS feeds that work.
Set it up in the RSS connector
Connectors -> New connector -> Blog or newsletter (RSS)
Feed URL: https://www.hoopsrumors.com/feed
Prompt: One post for NBA fans: the news in one sentence,
player and team first, then what it changes for
the rotation, the cap or the standings. Name the
source. No hashtags, no "BREAKING", no emoji.
Featured image: off (agency photos are licensed)
Frequency: Every 15 minutes
X account: @yournbanewsRunning a team account? Use a league-wide feed and add "skip items that are not about the Celtics" to the prompt, since the SB Nation team feeds came back empty. Scheduled runs skip items older than 48 hours, and each run posts at most the number of posts you set (1, 5 or 10), so a new connector won't flood the account with last week's news.
A final-score post in Python
Reads tonight's scoreboard, posts each game that has finished with both teams' top performer, and remembers which games it already posted. Run it from cron every 15 minutes from 9 p.m. to 1:30 a.m. ET. We ran it on November 12, 2026 against the November 11 slate (with the post call swapped for a print): it wrote 10 finals, and a second run posted nothing.
import os, json, pathlib, requests
OT = {"Authorization": f"Bearer {os.environ['OPENTWEET_API_KEY']}"}
SEEN = pathlib.Path("posted_games.json")
seen = set(json.loads(SEEN.read_text())) if SEEN.exists() else set()
board = requests.get("https://site.api.espn.com/apis/site/v2/sports/basketball/nba/scoreboard", timeout=20).json()
for event in board["events"]:
comp = event["competitions"][0]
if not comp["status"]["type"]["completed"] or event["id"] in seen:
continue
win, lose = sorted(comp["competitors"], key=lambda c: int(c["score"]), reverse=True)
def top(team): # ESPN's "rating" leader: the team's best line of the night
lead = next((l for l in team.get("leaders", []) if l["name"] == "rating"), None)
return f"{lead['leaders'][0]['athlete']['shortName']}: {lead['leaders'][0]['displayValue']}" if lead else ""
record = win.get("records", [{}])[0].get("summary", "")
ot = " (OT)" if comp["status"]["period"] > 4 else ""
text = (f"FINAL{ot}: {win['team']['displayName']} {win['score']}, {lose['team']['displayName']} {lose['score']}"
+ (f" ({win['team']['abbreviation']} {record})" if record else "")
+ "\n\n" + "\n".join(x for x in (top(win), top(lose)) if x))
requests.post("https://opentweet.io/api/v1/posts", headers=OT,
json={"text": text, "publish_now": True}).raise_for_status()
seen.add(event["id"])
SEEN.write_text(json.dumps(sorted(seen)))What it posted
FINAL: San Antonio Spurs 124, Chicago Bulls 119 (SA 10-2)
V. Wembanyama: 32 PTS, 9 REB, 5 BLK
J. Smith: 23 PTSAt 3 a.m. ET the default scoreboard still showed the previous night's games, so late West Coast finals are picked up. For a team account, keep only events where one of comp["competitors"] is your team. Every final is a plain-text post, so it does not use a link post.
ESPN's site API is unofficial. It needs no key and has served NBA scoreboards for years, but it is undocumented and can change. Check the response before posting, and license data (Sportradar and others) if the account is a business.
The rest of the 2026-27 season
From NBA.com's 2026-27 key dates (updated October 28, 2026) and NBC's key-dates article, read November 12, 2026. Where they differ (Cup group play ends November 27 per the NBA, November 29 per NBC), we use the NBA's date.
| Date | What happens |
|---|---|
| Through Fri Nov 27 | Emirates NBA Cup group play |
| Fri Dec 4 - Sat Dec 5 | NBA Cup quarterfinals |
| Tue Dec 8 and/or Wed Dec 9 | NBA Cup semifinals |
| Fri Dec 11 | NBA Cup final, Hinkle Fieldhouse, Indianapolis |
| Fri Dec 25 | Christmas: Spurs vs. Knicks 12 p.m., Heat vs. Celtics 2:30, 76ers vs. Lakers 5, Thunder vs. Timberwolves 8, Nuggets vs. Warriors 10:30 (ET, ABC/ESPN) |
| Thu Feb 11, 2027 | Trade deadline (time not yet published) |
| Feb 19-21, 2027 | All-Star weekend, Phoenix |
| Sun Apr 11, 2027 | Last day of the regular season |
| Apr 13-16 / Apr 17, 2027 | Play-In Tournament / playoffs begin |
Plan big nights with an AI agent
Connect Claude, ChatGPT or Cursor to the OpenTweet MCP server and ask: "Here are the five Christmas Day games and each team's record. Write a preview for each, schedule them one hour before tip-off, and save a draft recap post for the night." Give it the facts; it writes the words and fills the calendar.
Which plan fits your account
Flat monthly price, no per-post fee. The deciding numbers are posts a day and how many carry a link.
| Setup | Typical volume | Plan |
|---|---|---|
| One team: news in your words plus its final score | Up to 20 posts a day | Pro, $19.99/mo |
| League-wide finals and headlines with source links, or news, fantasy and one team on 3 accounts | Up to 100 posts a day, 10 link posts, 3 X accounts | Advanced, $29/mo |
| A network of team or conference accounts | Up to 300 posts a day, 20 link posts, 10 X accounts | Agency, $49/mo |
A league-wide account on a 12-game night posts 12 finals plus the news, which can pass Pro's 20 a day, so pick Advanced. Pro includes 1 link post a day; link credits cover deadline day on any plan. See pricing.
No game footage. Highlight clips belong to the NBA and its broadcasters, who send takedowns, and repeated strikes cost X accounts. Post the score in text and quote-post the official clip instead. See how X clips work.
Your words, their credit. A one-sentence summary that names the source is news. Pasting the article is copying. Leave agency photos off.
Don't pose as a team or the league. Pick a name and avatar that don't look official, turn on X's Automated label, and name who runs the account. More in X automation rules.
Rumors are not news. Say "reported by" until a team confirms a trade. A bot that posts every rumor as fact loses followers on deadline day. See running a news aggregator account.
Frequently asked questions
How do I auto-post NBA news to X?
Add an NBA RSS feed (ESPN, Yahoo Sports, CBS Sports, Hoops Rumors, RotoWire, The Guardian and BBC Sport all worked on November 12, 2026) to the OpenTweet RSS connector, write one prompt that turns each headline into a post in your voice, set it to check every 15 minutes, and pick the X account. For final scores, run a short script every 15 minutes during the evening. OpenTweet posts through a normal X login, so you need no X developer account.
Which NBA RSS feeds still work?
On November 12, 2026 these returned fresh items: espn.com/espn/rss/nba/news (16 items), sports.yahoo.com/nba/rss/ (50), cbssports.com/rss/headlines/nba/ (36), hoopsrumors.com/feed (15), rotowire.com/rss/news.php?sport=NBA (5, player news), theguardian.com/sport/nba/rss (20) and feeds.bbci.co.uk/sport/basketball/rss.xml (17, updated less often). NBA.com's old RSS addresses return 404 or 403, HoopsHype returned 402, SI, Sporting News, theScore and Fox Sports returned 404, and SB Nation team blogs returned empty feeds.
Is there a free NBA scores API?
There is no official free NBA API for this. ESPN's site API answers https://site.api.espn.com/apis/site/v2/sports/basketball/nba/scoreboard without a key, with each game's status, score, team records and each team's points, rebounds, assists and top performer. Add ?dates=YYYYMMDD for another day. It is undocumented and unsupported, so it can change without notice; for a business, license data from a provider such as Sportradar.
When is the 2027 NBA trade deadline?
Thursday, February 11, 2027, per the NBA's 2026-27 key dates (updated October 28, 2026). The league had not published the time when we checked; the February 2026 deadline was at 3 p.m. ET. It is the busiest transaction day of the season for a news account.
When is the 2026 NBA Cup final?
Friday, December 11, 2026, at Hinkle Fieldhouse in Indianapolis, which replaces Las Vegas this year. Group play runs October 30 to November 27, the quarterfinals are December 4-5, and the semifinals December 8 and/or 9, per NBA.com's key dates. NBC's key-dates article says group play ends November 29; we use the NBA's date.
Can I post NBA highlight clips on X?
Not clips you don't own. Game footage belongs to the NBA and its broadcast partners, and they file copyright takedowns against accounts that repost it; repeated strikes get X accounts suspended. Post the score and the stat line in text, and quote-post the team's or the league's own clip. X's new clip tool (November 2026) keeps a "Clip from" link to the original and is the safer way to share a moment.
How often should an NBA news account post?
Follow the basketball night: news and injury updates through the day, final scores from about 9:30 p.m. to 1 a.m. ET, and big stories as they break. On a 10-game night a league-wide account posts 10 finals plus 10 to 20 news posts. A team account posts its one game, the injury report and the team news.
Other sports? See the NFL news bot, the sports stats bot, the golf news bot and the football transfer news bot. Game odds? See the prediction market odds bot.
Everything you can build on X with OpenTweet
Post to X from your code, a watcher, or an AI agent. Start anywhere in the cluster.
OpenTweet vs the X API
Post, schedule, and automate X without a developer account or the $200/mo minimum.
X DM outreach, human-approved
Find and qualify leads, AI-draft DMs, approve each one, and drip-send from your own account via API or MCP.
Post to X without an API
The clean, account-safe way to post to X from your code or an AI agent.
Twitter MCP Server
Give Claude, Cursor, and OpenClaw the ability to post to X. 44 tools included.
Developer docs
Quickstart, API keys, MCP setup, and the REST reference for posting to X from code or an agent.
Cross-posting reference
One call posts to X, Bluesky and LinkedIn. The platforms field, per-network results, and why a network gets skipped.
Social media API for AI agents
Three ways an agent can post to X, Bluesky and LinkedIn, and the trade-offs of each.
LinkedIn MCP server
Post and schedule to a LinkedIn profile from Claude or Cursor through the official LinkedIn API.
XMCP vs OpenTweet
X's official MCP server bills per API call and cannot schedule. Compare it with the flat-fee hosted MCP.
MCP for AI agents
Connect your AI client to X in under two minutes, no X developer account.
Developer API and keys
REST endpoints, one bearer key, and usage tracking. Build on OpenTweet.
OpenTweet for AI agents
The posting layer for autonomous agents and automations that live on X.
Build an AI Twitter persona
Give your AI agent its own X account. Setup, cadence, and the rules that keep it safe.
Best MCP servers for social media
The 2026 ranked list. How the hosted OpenTweet MCP compares with the official X MCP and others.
Best API to post to X
Seven options priced at real volumes, and why links decide the bill.
Cheapest way to post to X via code
Flat fee vs pay-per-use. Why the $0.20 per-link fee flips the math past ~145 link posts a month.
X API pricing 2026
Every pay-per-use X API endpoint price from docs.x.com in one searchable table.
Bluesky posting API
Post and schedule to Bluesky with one REST call and OAuth, and cross-post to X and LinkedIn in the same request.
Automate LinkedIn posts
Post to LinkedIn from an AI agent, n8n or a script through the official Posts API, with one REST or MCP call.
Every final posted before the postgame show
Connect X, add an NBA feed, and have the account running before the NBA Cup knockouts.