Build guide · January 2027 window

Build a football transfer news bot for X
Tested feeds, a filter that works, deadline-day math

Most football feeds are full of match reports. Post only the transfers, say what is confirmed and what is a rumour, and be ready before the window opens on January 1. No X developer account, no X API bill.

Card required, cancel any time.

The short answer

Add a football RSS feed as an OpenTweet connector, tell the AI to skip anything that is not a transfer, and have it name the source and mark each story as confirmed or reported. Set the check to every 5 or 15 minutes. For your own filter or instant posting, poll the feeds in a script and send each story to POST https://opentweet.io/api/v1/posts. The Premier League's January 2027 window runs from January 1 to 11pm UK time on February 1.

Feeds that work

We fetched each one on October 30, 2026 as the OpenTweet connector does, and ran the result through its parser. Feeds change, so preview yours when you add it.

FeedURLStoriesGood to know
Marca, transfer markethttps://e00-marca.uecdn.es/rss/futbol/mercado-fichajes.xml50Transfers only, in Spanish. Includes contract renewals and managers
CaughtOffsidehttps://www.caughtoffside.com/feed/10Mostly transfer rumours. Treat as reported, never confirmed
BBC Sport, footballhttps://feeds.bbci.co.uk/sport/football/rss.xml80All football, so it needs a filter
The Guardian, footballhttps://www.theguardian.com/football/rss58All football, so it needs a filter
Football Italiahttps://www.football-italia.net/feed/20Serie A, so it needs a filter
ESPN, soccerhttps://www.espn.com/espn/rss/soccer/news19All football, no images in the feed
Get Football News Germanyhttps://www.getfootballnewsgermany.com/feed/10Bundesliga, so it needs a filter

Transfermarkt's /rss/news returned an empty 202 response in our test, so it is not in the table. Sky Sports' /rss/12040 covers all sports, not football. See the full list of tested news feeds.

The January 2027 window

Dates are for the Premier League. Other leagues set their own, so check each one you cover.

WhenWhat to do
Now to DecemberBuild the account on rumours and contract stories. Interest is lower, so this is the cheap time to tune your filter.
Fri Jan 1, 2027The Premier League window opens. Raise checks to every 5 minutes and watch for repeats across feeds.
Jan 2 to Jan 31Steady flow of signings and loans. Keep the same format on every post so followers can scan it.
Mon Feb 1, 2027Deadline day. The window closes at 11pm UK time. Plan for your highest volume of the window, and buy link credits first.

Two ways to build it

No code: a connector with a filter prompt

Add the feed, choose AI mode and paste this prompt. The writer can decline a story, and declined stories are never posted. Leave Review before publishing on until the output looks right, and turn the image option off unless you have the rights.

Only write a post if this story is about a player moving clubs,
a loan, a contract or a manager appointment. Otherwise skip it.

Format:
- Line 1: the move, in plain words, in your own wording.
- Line 2: say "Confirmed" only if the club or player has announced it.
  Otherwise write "Reported by" and the outlet's name.

No "BREAKING". No hashtags. Do not copy sentences from the article.
Never add a fee or a date that is not in the story.

Connectors check as often as every 5 minutes on any plan. Pro has 5 connectors and 10 connector posts a day, Advanced 50 and Agency 150, with unlimited connectors on both. Auto-published posts start a few minutes after the check and keep the gap you set.

Your own script: instant posting

Run this from cron every few minutes. It posts as soon as it finds a story, remembers what it has seen, and the keyword list is yours to change. It posts headlines word for word, so read the headline rules first, or rewrite them with a model before sending.

import re, json, pathlib, requests, feedparser

OT_KEY = "ot_your_key"
FEEDS = ["https://feeds.bbci.co.uk/sport/football/rss.xml",
         "https://www.theguardian.com/football/rss"]
WANT = re.compile(r"\b(transfer|signs?|signing|loan|bid|medical|deal|contract)\b", re.I)
SEEN = pathlib.Path("seen.json")
seen = set(json.loads(SEEN.read_text())) if SEEN.exists() else set()

for url in FEEDS:
    feed = feedparser.parse(url)
    for item in feed.entries:
        if item.link in seen or not WANT.search(item.title):
            continue
        seen.add(item.link)
        source = feed.feed.get("title", "source")
        text = f"{item.title}\n\nReported by {source}\n{item.link}"
        requests.post("https://opentweet.io/api/v1/posts",
                      headers={"Authorization": f"Bearer {OT_KEY}"},
                      json={"text": text, "publish_now": True})

SEEN.write_text(json.dumps(sorted(seen)))

Every field is in the API reference. Prefer an agent? Connect it to the OpenTweet MCP server and ask it for a daily roundup instead.

The link-post math for the window

Plan for deadline day, not the average. A post with no link costs you nothing extra, so a confirmed signing can go out as plain text.

SetupLinks includedPlan
One club, mostly plain text1 a dayPro, $19.99/mo
One league, every story linked10 a dayAdvanced, $29/mo
Several leagues or accounts20 a dayAgency, $49/mo

Link credits cover the spike: $10 for 30, $25 for 100, $50 for 200. Example: an Advanced account posting 40 linked stories on deadline day uses its 10 included links and 30 credits, so one $10 pack covers it. Through the X API directly, those 40 posts would cost $8 in fees, on top of building and hosting the posting code.

Rumours are not facts. Say "Reported by" until a club or player announces the move. A wrong "Confirmed" costs you the followers you built the account for.

Your words, their credit. Summarize in one line, name the outlet, and link to it. Do not paste article text or press photos. See can you post news headlines on X.

No impersonation, no copies. Do not style the account after a journalist or a club, and do not post the same story from several accounts. Turn on the Automated label. More in X automation rules.

Frequently asked questions

How do I build a football transfer news bot for X?

Add a football RSS feed as an OpenTweet connector, tell the AI to skip anything that is not a transfer, and have it name the source and say whether the move is confirmed or reported. Check the feed every 5 or 15 minutes. If you want your own filter or instant posting, poll the feeds in a script and send each story to POST https://opentweet.io/api/v1/posts. You do not need an X developer account.

When is the January 2027 transfer window?

The Premier League window opens on Friday, January 1, 2027 and closes at 11pm UK time on Monday, February 1, 2027. Other leagues set their own dates, so check each league before you schedule around them.

Which football RSS feeds work for a transfer bot?

On October 30, 2026 these returned current stories to our connector: Marca's transfer market feed (Spanish), CaughtOffside, BBC Sport football, The Guardian football, Football Italia, ESPN soccer and Get Football News Germany. Only Marca's feed is transfers only, so the others need a filter. Transfermarkt's RSS returned an empty response when we tested it, so do not rely on it.

How do I keep match reports out of the feed?

In AI mode, write the rule in the connector prompt, for example: "Only write a post if this story is about a player moving clubs, a contract or a loan. Otherwise skip it." The writer can decline an item, and declined items are marked as handled and never posted. Template mode has no filter, so it posts every item in the feed.

Can I post the feed's photos?

Turn the image option off unless you own the rights or the publisher allows it. The connector can attach a feed's featured image, but press and agency photos are usually licensed, and a rights holder can report your post. Post text with a link, which shows a preview card if the publisher set one, or use images you made yourself.

How many link posts does a transfer account need?

Every post with a URL is a link post. OpenTweet includes 1 a day on Pro ($19.99/mo), 10 on Advanced ($29/mo) and 20 on Agency ($49/mo). Link credits cover deadline day: $10 for 30, $25 for 100 or $50 for 200. On the X API directly, each post with a URL costs $0.20 against $0.015 for a plain post.

Can my bot copy Fabrizio Romano's "Here we go"?

Do not imitate a journalist or make your account look like theirs. Credit the person or outlet that reported the story, in your own words, and link to it. Turn on the Automated label on the account, because X requires automated accounts to be identified.

Posting numbers rather than news? See the sports stats bot. Covering more than football? See the news aggregator account.

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.

The window opens January 1

Connect X, add a feed, and tune your filter while the news is slow.