What Is Screen Scraping? How It Differs From Web Scraping
Screen scraping reads what a program displays instead of what it stores. How it works, how it differs from web scraping, and which tools to pick in 2026.

On this page
A bank in 2026 still runs on an IBM terminal design from 1971. Airlines, insurers, and enormous chunks of enterprise back-office work run on systems that have no API, no export button, and no web page: just text on a monitor. Screen scraping is how software reads data out of those screens. It reads what a program displays instead of what it stores, and that’s the whole difference between it and web scraping.
This page defines screen scraping the way practitioners use the term, shows how it works with a demo you can run yourself, and settles the screen-scraping-vs-web-scraping question with a table you can act on. It ends with a decision rule: which technique to reach for, based on where your data lives.
What screen scraping actually means
Screen scraping is the automated reading of data from what a program shows on screen, the rendered interface, rather than from the program’s underlying files, database, or network responses. The scraper sees what a user sees: pixels and window controls, formatted for human eyes. Its job is converting that display back into structured data.
That definition covers three different jobs, and almost every confusing article about screen scraping is about one of them without saying which.
Legacy terminal scraping
The original meaning. IBM 3270 terminals, the “green screens,” still front mainframes that process card payments, insurance claims, and airline reservations. The terminal receives a formatted data stream and paints it; there is no HTML, no JSON, no DOM underneath. Programs automate these screens through IBM’s HLLAPI (High Level Language API) or through terminal-emulator toolkits that read characters and their coordinates out of the emulator’s buffer. This is decades-old, load-bearing infrastructure. When a bank says it “does screen scraping” internally, it means this.
Desktop application scraping
The same idea aimed at native apps: Windows line-of-business software, accounting packages, ERP clients. The tool enumerates windows and controls through an accessibility API (Microsoft’s UI Automation is the standard) or falls back to OCR when the app draws its own controls. This is the core mechanic of RPA, robotic process automation: a bot operates an app through its UI exactly as a person would, because no better interface exists.
The loose use: calling web scraping “screen scraping”
Marketing and casual usage smear the term across web scraping, because a web page is also “on screen.” They’re different techniques: web scraping parses the page’s HTML, the code, while screen scraping reads the rendered result. When a vendor’s “screen scraping tool” runs inside a browser, it’s a web scraper wearing a different label. The distinction matters practically. One reads markup, the other reads pixels, and everything about fragility and data quality follows from that.
How screen scraping works
Every screen scraper, from a 3270 reader to an RPA bot, runs the same four-stage pipeline:
- Capture. Get the screen content: a terminal buffer, a window’s control tree via UI Automation, or a raw screenshot bitmap.
- Locate. Find where the data sits on the screen: fixed row/column offsets on a green screen, named controls in a desktop app, or regions that have to be guessed from pixels.
- Recognize. Turn visuals into characters. Accessibility APIs hand you exact strings; pixels need OCR, optical character recognition, which estimates the text it sees.
- Rebuild. Map recognized text back into fields (account number, balance, order total) and write it out as structured data.
The fourth stage is where the cost shows up. Here’s a demo that shows what “reading a screen” really means. First the web-scraping side: the practice site books.toscrape.com sells a book for £51.77, and that value exists as text in the HTML:
$ grep -o '.\{60\}51\.77.\{30\}' books.html
_price"> <p class="price_color">£51.77</p> <p class="instock avai
The string £51.77 sits right there in the source. A parser lifts it out exactly, byte for byte.
Then the screen side. I rendered a 3270-style order entry panel to a PNG, a stand-in for any screenshot (a short Python script with Pillow; any screenshot tool produces the same artifact). On screen it reads, abridged:
ACME ORDER ENTRY 3270 SCREEN 1 OF 2
ORDER: 88412 STATUS: CONFIRMED
ITEM QTY UNIT PRICE TOTAL
BRASS COMPASS 3 51.77 155.31
...
Same number, plainly visible. Now grep the PNG:
$ grep -a -c "51.77" order-screen.png
0
Zero. The number exists nowhere in the file’s bytes. A PNG stores lit and unlit pixels; the digits are just a pattern of them. This is why screen scrapers ship OCR engines, and why OCR output needs checking: a smudged glyph becomes a wrong digit, and 51.77 arrives as 51.11 with nothing to flag it.
Screen scraping vs web scraping
The verdict first: screen scraping reads rendered interfaces; web scraping reads source code. Same goal, different input, and the difference drives everything downstream.
| Screen scraping | Web scraping | |
|---|---|---|
| What it reads | Rendered output: terminal buffer, window controls, pixels | HTTP responses: HTML, JSON, embedded data |
| Typical targets | Mainframe green screens, Windows desktop apps, anything with no API | Websites, APIs, feeds, anything on the network |
| Data fidelity | Estimated. OCR guesses at glyphs; coordinates can drift | Exact. Values come out as the literal strings in the markup |
| What breaks it | A font change, a moved control, a different screen resolution | A redesign, new markup, or bot protection on the page |
| Typical tools | RPA suites (UiPath, Power Automate), terminal emulators with HLLAPI, OCR engines | HTTP clients plus parsers, browser automation, scraping frameworks |
| Failure mode you’ll notice | Silent wrong values: OCR reads a number, just not the right one | Loud failures: the selector matches nothing and errors out |
Three consequences worth spelling out.
Fidelity. Web scraping hands you the exact string the server sent. Screen scraping hands you its best reading of a picture of the string — for an order total, a scary unit of accounting.
Fragility, differently shaped. Both break when the source changes, but screen scraping breaks more often and more quietly: a UI update moves a control a few pixels and every downstream field shifts. Web scraping usually fails loudly. The selector finds nothing, the script errors, you find out the same day.
Legality lives in different documents. Web scraping arguments run through website terms of service and cases like hiQ v. LinkedIn. Screen scraping runs through software license agreements and employment policy. Most desktop apps explicitly forbid automated control, and banks terminate sessions they detect as scraped. If your target is a website, the fuller legal picture is in Is Web Scraping Legal?.
Where screen scraping still runs the world
Not legacy in the “about to be replaced” sense. Three places it is load-bearing right now:
- Mainframes. Airlines, banks, and governments still book transactions through 3270 applications. Replacing them takes years and nine figures, so RPA bots and HLLAPI scripts sit in front of screens painted in a 1970s layout. They will keep running for years.
- RPA. UiPath built an entire public company (NYSE: PATH) on operating software through its UI. When an app has no API, the UI is the API.
- Bank aggregation. The cautionary tale. Account aggregators like Mint and Yodlee got bank data by storing your username and password and screen scraping the bank’s web portal. Banks couldn’t tell aggregator from attacker, sessions broke on every redesign, and stored credentials were a standing breach risk. Open Banking regimes (PSD2 in Europe, FDX in the US) replaced it with OAuth: the bank issues a revocable token, and the scraper goes away. Intuit shut Mint down in March 2024. When an industry can move from screen scraping to an API, it eventually does.
Screen scraping software people actually use
No single product owns this category. Working setups draw from three shelves.
RPA platforms: UiPath and Power Automate
For desktop and terminal work, RPA suites are the default. UiPath is the enterprise leader: visual workflow builder, built-in OCR, terminal activity packs for 3270/5250 screens, a free Community tier for individuals and separate enterprise licensing. Microsoft Power Automate Desktop is the classic Windows screen scraper. It ships free with Windows 10 and 11, reads UI Automation controls natively, and Premium plans run $15 per user per month (billed annually, per Microsoft’s 2026 pricing). Both are heavy tools for heavy jobs; expect weeks of learning curve, not minutes.
Free screen scraping: the three worth installing
Not every job needs an RPA suite. Queries like “free screen scraping software” and “screen scraping tools free” mostly surface the same three names, and all three are worth installing. A screen scraper free of charge gets you surprisingly far: Power Automate Desktop (bundled with Windows) covers most desktop automation; Tesseract, Google-maintained and Apache-2.0-licensed, is the open-source OCR engine behind half the scripts on GitHub; and ParseHub’s free tier (5 public projects, 200 pages per run) handles click-through web targets visually. If your search is really about websites, ParseHub and its kin are the honest answers: they’re web scrapers, and good ones.
Before you download a screen scraper
Searches like “screen scraper download” lead to a minefield of abandoned utilities and bundleware. Any screen scraper program you install runs inside your desktop session with your privileges; it can read everything you can. Stick to tools with a maintained codebase or a named company behind them, verify the checksum, and never hand credential storage to a tool you found last week. The aggregation story above is what happens when credential storage goes wrong.
Is there a screen scraping API?
Not the way the search results imply. There is no product that takes a screenshot in and hands clean records out. What exists under the label:
- OCR APIs (Google Cloud Vision, AWS Textract, Azure AI Vision) take images and return recognized text with position data. That’s the recognition stage as a service; capture and rebuilding stay yours.
- Web scraping APIs are commercial services that fetch pages and return parsed data. Sold as “scraping APIs,” they solve the web problem, not the screen problem.
If a vendor sells you a “screen scraping api” and delivers HTTP endpoints that accept URLs, you’ve bought a web scraping API under the wrong name. Fine, as long as you know which job it does. The deeper difference between the two families is covered in Web Scraping vs API.
FAQ
Is screen scraping the same as web scraping?
No. Screen scraping reads what a program displays: terminal buffers, desktop app controls, or pixels that need OCR. Web scraping parses the underlying HTML or JSON the web server sends. Reading code beats reading pixels on fidelity and reliability, which is why screen scraping is a fallback for systems with no better interface.
Is screen scraping legal?
Often yes, with limits. Reading your own screen with your own credentials is generally lawful; the fights start with license terms that forbid automation, employment policy, and regulated data. Banks close sessions they detect as automated. Website targets have their own case law, starting with Is Web Scraping Legal.
What is an example of screen scraping?
An insurance bot reading a policy number off a 3270 green screen via HLLAPI. A Power Automate flow pulling an invoice total out of a Windows accounting app through UI Automation. Historically: Mint logging into your bank portal and scraping the transactions page, the example Open Banking ended.
Why do banks dislike screen scraping?
Because the scraper looks identical to an account takeover: a program logging in with stored credentials from an unfamiliar client. Banks can’t tell the difference, so they block aggressively. OAuth-based Open Banking connections give the bank revocable tokens and visibility instead, which is why the industry pushed aggregators off screen scraping.
Which one should you use?
Follow the data. If the value you need exists in an HTTP response (HTML, JSON, anything a request returns), parse the response. Exact strings, faster, easier to test; the whole practice is documented in What Is Data Scraping and its parent, What Is Data Extraction.
Reach for screen scraping only when the data exists solely on a screen: a mainframe application, a desktop program with no export, an app that draws its own controls. Pick the gentlest reader that works, accessibility APIs over OCR and exact control reads over pixels, and log every value with a confidence score. Silent misreads are the failure mode that hurts.
That web-vs-screen fork is also where tools diverge. Magpie, the one I build with, sits entirely on the web side: a local CLI that parses pages into clean Markdown with a JSON-LD sidecar, respecting robots.txt as it goes. Show it a green screen and it has nothing to say. That boundary is stated plainly on purpose. If your targets are websites, the sites worth practicing on are the natural next step.


