Build guide

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 breaks

The news in one sentence, player and team first, with the source. Most of a news account's posts.

Final score

Every night

Score, the winner's record, and each team's top performer. The script below writes it.

Injury report

Daily

Who is out or questionable tonight, updated through the day until tip-off.

Trade and signing

As it happens

Who moved, for what, and what it does to both rotations and the cap. February is the peak.

Fantasy note

Before tip-off

Who is starting, who is resting, and minutes changes. Fantasy managers follow accounts for this alone.

Standings and Cup

Weekly

Cup 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.

SourceFeed URLItemsNote
ESPN NBAespn.com/espn/rss/nba/news16League-wide, fast on injuries and trades
Yahoo Sports NBAsports.yahoo.com/nba/rss/50Busy; mixes news, columns and betting
CBS Sports NBAcbssports.com/rss/headlines/nba/36News plus picks and rankings, so filter. No dates in the feed
Hoops Rumorshoopsrumors.com/feed15Signings, trades, waivers, two-way deals. Best for deadline day
RotoWire NBA player newsrotowire.com/rss/news.php?sport=NBA5Short player updates; the fantasy and injury beat
The Guardian NBAtheguardian.com/sport/nba/rss20Analysis and columns
BBC Sport basketballfeeds.bbci.co.uk/sport/basketball/rss.xml17International 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:  @yournbanews

Running 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 PTS

At 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.

DateWhat happens
Through Fri Nov 27Emirates NBA Cup group play
Fri Dec 4 - Sat Dec 5NBA Cup quarterfinals
Tue Dec 8 and/or Wed Dec 9NBA Cup semifinals
Fri Dec 11NBA Cup final, Hinkle Fieldhouse, Indianapolis
Fri Dec 25Christmas: 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, 2027Trade deadline (time not yet published)
Feb 19-21, 2027All-Star weekend, Phoenix
Sun Apr 11, 2027Last day of the regular season
Apr 13-16 / Apr 17, 2027Play-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.

SetupTypical volumePlan
One team: news in your words plus its final scoreUp to 20 posts a dayPro, $19.99/mo
League-wide finals and headlines with source links, or news, fantasy and one team on 3 accountsUp to 100 posts a day, 10 link posts, 3 X accountsAdvanced, $29/mo
A network of team or conference accountsUp to 300 posts a day, 20 link posts, 10 X accountsAgency, $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.