iMacros Data Extraction: Browser Automation Tutorial
iMacros is one of the original point-and-click browser automation tools, and for straightforward jobs it is still a fast way to pull data off a website without writing a full program. You record what you do in the browser, tweak a few lines of a simple macro language, and let it replay — clicking, filling forms, paging through results, and extracting text into a CSV. This tutorial is a hands-on walkthrough of iMacros data extraction: recording a macro, using the TAG and EXTRACT commands, looping over paginated pages, and saving the results.
A quick reality check first, because the tool has aged. iMacros began as an Internet Explorer add-on, and IE itself was retired by Microsoft in 2022 — so any old "iMacros for IE" tutorial is describing a browser that no longer exists. Today iMacros lives on as browser extensions for Chrome, Edge, and Firefox (plus a paid desktop edition), now under Progress Software. The macro language below is essentially unchanged, so the skills transfer directly. We will teach the current, cross-browser way and flag where modern alternatives make more sense.
What iMacros is (and isn't) good for
iMacros records a sequence of browser actions as a plain-text macro and replays them on demand. As a data extraction tool it shines on:
- Small-to-medium jobs where writing code is overkill.
- Repetitive form-driven pages — search, filter, next, repeat.
- Tables and lists with stable HTML structure.
- Analysts who want automation without a programming background.
It is a weaker fit for JavaScript-heavy single-page apps, sites behind aggressive bot protection, anything needing thousands of pages fast, or workflows you must run headless on a server. For those, a code-based approach with Playwright, Puppeteer, or Selenium is more robust — more on that at the end.
Installing and recording your first macro
Install the iMacros extension from your browser's add-on store and pin it. The panel has two tabs that matter: Rec (record) and Play. To capture a macro:
- Open the Rec tab and click Record.
- Navigate to your target page, click a link, type in a search box — do the task by hand.
- Click Stop. iMacros saves a
.iimmacro of everything you did.
Open the recorded macro (Edit) and you will see readable commands like URL GOTO=..., TAG ..., and EVENT .... Recording gets you 80% of the way; the last 20% — extraction and looping — is a few hand edits.
The core extraction commands
Three commands do almost all the work in an iMacros data-extraction macro.
URL GOTO navigates to a page:
URL GOTO=https://example.com/products?page=1
TAG ... EXTRACT selects an element and pulls a value out of it. You identify the element by position (POS), tag type (TYPE), and an attribute filter (ATTR), then say what to extract:
TAG POS=1 TYPE=TABLE ATTR=CLASS:data-table EXTRACT=TXT
EXTRACT=TXTgrabs the visible text (for a table, iMacros returns it with[EOT]/comma separators you can turn into CSV).EXTRACT=HTMgrabs the inner HTML.EXTRACT=HREFgrabs a link's URL.EXTRACT=TXTALLgrabs text from all matching elements at once.
Suppress the on-screen popup that iMacros shows after each extraction so batch runs don't stall:
SET !EXTRACT_TEST_POPUP NO
SAVEAS TYPE=EXTRACT writes everything you have extracted so far to a CSV file:
SAVEAS TYPE=EXTRACT FOLDER=* FILE=results.csv
FOLDER=* uses the default iMacros download folder, which is more portable than a hard-coded Windows path like c:\iMacros from older tutorials.
Here is a minimal single-page extraction macro:
VERSION BUILD=1030
TAB T=1
SET !EXTRACT_TEST_POPUP NO
URL GOTO=https://example.com/products?page=1
TAG POS=1 TYPE=TABLE ATTR=CLASS:data-table EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=* FILE=results.csv
Looping over multiple pages
Real jobs span many pages. The clumsy way — the one you see in a lot of old macros — is to copy the "extract table, click Next, wait" block over and over. It works, but it is rigid and breaks the moment the page count changes:
TAG POS=1 TYPE=TABLE ATTR=CLASS:data-table EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=* FILE=results.csv
TAG POS=1 TYPE=A ATTR=TXT:Next
WAIT SECONDS=2
TAG POS=1 TYPE=TABLE ATTR=CLASS:data-table EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=* FILE=results.csv
TAG POS=1 TYPE=A ATTR=TXT:Next
The clean way is to write the block once and let iMacros loop it, using the built-in {{!LOOP}} counter. Press Play (Loop) and set the number of repetitions; {{!LOOP}} starts at 1 and increments each run. If the site uses a page number in the URL, you don't even need to click "Next":
VERSION BUILD=1030
TAB T=1
SET !EXTRACT_TEST_POPUP NO
URL GOTO=https://example.com/products?page={{!LOOP}}
WAIT SECONDS=1
TAG POS=1 TYPE=TABLE ATTR=CLASS:data-table EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=* FILE=results.csv
Run this with Loop set to, say, 20, and iMacros walks pages 1 through 20, appending each table to results.csv. This is far more maintainable than a hand-unrolled macro, and changing the range is a single number.
Feeding inputs with !DATASOURCE
To drive extraction from a list of inputs — search terms, product IDs, ZIP codes — point iMacros at a CSV with SET !DATASOURCE and reference columns with {{!COL1}}, {{!COL2}}, and so on. Combined with loop mode, {{!LOOP}} selects the row:
VERSION BUILD=1030
SET !DATASOURCE inputs.csv
SET !DATASOURCE_LINE {{!LOOP}}
SET !EXTRACT_TEST_POPUP NO
URL GOTO=https://example.com/search?q={{!COL1}}
WAIT SECONDS=1
TAG POS=1 TYPE=DIV ATTR=CLASS:result-title EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=* FILE=results.csv
Now each loop iteration searches for the next term in inputs.csv and saves what it finds — a compact scrape-by-keyword workflow with no code.
Where iMacros hits a wall: dynamic content and CAPTCHAs
iMacros replays deterministic actions, which is exactly why it struggles with anything that fights back. Two common walls:
JavaScript-rendered content. If a table loads via XHR after the page settles, a plain TAG may fire before the data exists. WAIT SECONDS=n is a blunt fix; heavily dynamic sites are better handled by tools that wait for specific elements or intercept the underlying API. See our guide to scraping dynamic content for the modern approach.
CAPTCHAs. iMacros cannot meaningfully solve modern CAPTCHAs, and it is worth understanding why. Early experiments tried to beat Google's checkbox reCAPTCHA by having a macro click the box and then brute-force the image grid — checking random tiles and resubmitting until it got lucky. The math was never good (the odds of blindly picking the right two of nine tiles are around 1-in-36, and much worse once the grid grew to 4x4 or larger), and Google steadily hardened the challenge: it removed the frame-name hooks macros relied on, restructured the puzzle markup, and added session timeouts. The net result is that brute-forcing reCAPTCHA with iMacros is not a viable strategy today. If a target throws a CAPTCHA, the realistic options are a dedicated CAPTCHA solving service wired into a code-based scraper, or — better — avoiding the trigger with clean request behavior and rotating proxies. Trying to script it in iMacros is a dead end.
When to graduate to a code-based scraper
iMacros is a great on-ramp, but you will outgrow it when you need scale, reliability, or unattended server runs. The natural next steps:
- Playwright or Puppeteer — modern headless browser automation with robust waiting, network interception, and JavaScript support.
- Selenium — cross-language browser control, well suited to complex flows; see our Selenium web scraping guide.
- Requests + a parser — for server-rendered pages, skipping the browser entirely is far faster.
If you would rather not maintain any of it, a managed web scraping service or data as a service delivers the extracted dataset on a schedule so you never touch a macro or a proxy pool.
FAQ
Does iMacros still work in 2026? Yes, as browser extensions for Chrome, Edge, and Firefox (and a paid desktop edition). The Internet Explorer version is gone because IE was retired, but the macro language is the same, so older tutorials still teach transferable skills.
How do I extract a table with iMacros?
Use TAG POS=1 TYPE=TABLE ATTR=CLASS:yourclass EXTRACT=TXT, then SAVEAS TYPE=EXTRACT FOLDER=* FILE=results.csv. Set !EXTRACT_TEST_POPUP NO first so batch runs don't pause on a popup.
How do I loop over pages in iMacros?
Write the extraction block once using the {{!LOOP}} counter (for example in the page number of the URL), then use Play (Loop) and set the repeat count. This is cleaner than copy-pasting the block per page.
Can iMacros solve CAPTCHAs? Not reliably. Old brute-force tricks against reCAPTCHA no longer work after years of Google hardening. Use a solving service with a proper scraper, or avoid triggering the CAPTCHA at all.
Is iMacros better than Selenium or Playwright? For quick, small, human-supervised jobs, iMacros is faster to set up. For scale, reliability, headless server runs, and dynamic sites, code-based tools like Playwright or Selenium are the stronger choice.
Wrapping up
iMacros remains a legitimate browser automation plugin for quick data extraction: record a macro, extract with TAG ... EXTRACT, loop with {{!LOOP}}, feed inputs with !DATASOURCE, and save to CSV. Keep it for the jobs it's good at — small, structured, supervised — and reach for a code-based scraper or a managed service the moment you need scale, dynamic-content handling, or CAPTCHA resilience.