DEV Community

Lina Scott
Lina Scott

Posted on

A no-code way to scrape live World Cup betting odds

This World Cup has been full of upsets — Norway knocking out Brazil, Cabo Verde drawing with both Spain and Uruguay, all four pre-tournament favorites needing a single-goal margin just to survive the Round of 16. Every one of those showed up in the odds boards first, often hours before kickoff.

If you've ever wanted to capture that shift yourself — for a side project, some stats digging, or just curiosity — you've probably hit the same wall I did: writing and maintaining a scraper for a page you only need once or twice isn't worth the overhead. Selectors break, pages paginate, sites push back on bots.

So instead of spinning up Playwright or BeautifulSoup for a one-off pull, I tried something different: describing what I want in plain language and letting an AI agent handle the extraction.

The workflow

Using Chat4Data as an example, here's the loop:

  1. Describe the target and fields. Point it at a live odds page (I used Polymarket's live sports markets) and describe what you want: event time, volume, location, participants, moneyline, spread, total.

  2. Preview before extracting. It shows a planned workflow and a data preview first. If fields are missing or mismapped, you just say so in plain language and it adjusts — no re-writing selectors.

  3. Confirm the schema, then generate the collection plan.

  4. Review one more preview to catch mislabeled columns before committing.

  5. Extract, and export to CSV, JSON, or Excel.

The part that actually surprised me: the conversation persists. For a tournament running over weeks, I don't re-describe the extraction each time — I reopen the same thread and re-run it against the current page state.

(If you want to see this step-by-step with actual screenshots before trying it yourself, the full walkthrough is here.)

The honest comparison: this vs. a hand-rolled scraper

I want to be specific about the trade-off instead of just saying "it's easier."

Writing your own scraper Describing it to an agent
Setup Pick a lib (Playwright/Selenium/BS4), write selectors per field One sentence describing the fields you want
Site changes a class name You debug and patch selectors You just re-describe or nudge in plain language
Pagination / dynamic loading You write handling logic Handled as part of the extraction
Repeat runs (e.g. daily during a tournament) Re-run your script, hope nothing broke Reopen the same conversation, run again
Time for a one-off pull Anywhere from 20 minutes to a couple hours, depending on the page A few minutes, mostly spent describing fields and checking the preview

None of this replaces a real scraping pipeline if you need scheduled, high-volume, multi-site collection — see the next section. But for the "I just need this table, once or a few times" case, the setup cost difference is the whole pitch.

Where this fits (and where it doesn't)

To be clear about the boundaries: this isn't a monitoring or polling system. It won't sit in a loop hitting an endpoint every few minutes, and it's not a fit if you're building an automated arbitrage pipeline across sportsbooks. For that, you still want scheduled infra of your own.

Where it is useful is the much more common case: you're looking at a page, you want the structured data that's on it, right now, and don't want to write single-use scraping code for it. That covers a lot of quick, exploratory, or personal-scale data pulls — not just betting odds, but any structured table on a live page.

FAQ (from people who've asked)

  • Scraping legality? Depends entirely on the target site's ToS and local regulation around betting data — worth checking before pulling from any site regularly.
  • Output formats? CSV, JSON, or Excel.
  • Multiple rows/matches at once? Yes, if the page renders a table, it extracts the whole table in one pass.
  • Works on any site? Built for standard HTML tables generally; if a page doesn't extract cleanly you can flag it for support.

If you're curious, you can just try the Chrome extension directly on tonight's match.


For this kind of one-off, "I just need this table right now" need — do you usually reach for a script (Selenium/Playwright/BS4), a no-code tool like this, or just manually copy-paste? Curious what the actual split looks like in the comments.

Top comments (0)