Tools & Reviews 11 min read

iMacros Data Extraction: Browser Automation Tutorial

Learn how to extract web data with the iMacros browser plugin: record macros, loop over pages, and save results to CSV. Follow this hands-on how-to guide.

ST
Scraping.Pro Team
Data collection for business needs
Published: 31 March 2026

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:

  1. Open the Rec tab and click Record.
  2. Navigate to your target page, click a link, type in a search box — do the task by hand.
  3. Click Stop. iMacros saves a .iim macro 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:

code
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:

code
TAG POS=1 TYPE=TABLE ATTR=CLASS:data-table EXTRACT=TXT
  • EXTRACT=TXT grabs the visible text (for a table, iMacros returns it with [EOT]/comma separators you can turn into CSV).
  • EXTRACT=HTM grabs the inner HTML.
  • EXTRACT=HREF grabs a link's URL.
  • EXTRACT=TXTALL grabs text from all matching elements at once.

Suppress the on-screen popup that iMacros shows after each extraction so batch runs don't stall:

code
SET !EXTRACT_TEST_POPUP NO

SAVEAS TYPE=EXTRACT writes everything you have extracted so far to a CSV file:

code
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:

code
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:

code
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":

code
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:

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