Skip to content

Connect

n8n

n8n is a workflow tool. It has an MCP node built in, so a workflow can call Scrapewise directly: search Google and Amazon, find local businesses, read a page, read your saved rows. It can then send the result to Google Sheets, Slack, a database or anything else n8n connects to.

No AI model is needed. The node calls one Scrapewise tool you choose, with the arguments you give it. You need n8n 1.80 or newer (Cloud or self-hosted).

  1. Make a key in the portal. Press your name at the bottom of the portal menu, then API Keys, type a Key name, pick the Read scope (the portal shows it as LLM_READ) or the Full scope (LLM_FULL) and press Generate API Key. Copy the key. See Read or Full.
  2. Template 2 (competitor price monitor) works with a Read key. The other five templates need a Full key.
  3. In n8n open the workflow menu and choose Import from File. Pick a template file from the list further down.
  4. Open the Scrapewise node and add a Bearer Auth credential. Paste the key on its own, without the word Bearer.
  5. Open the Google Sheets node, pick your Google account and set the spreadsheet id and tab name. Open each Slack node, add your Slack credential and set the channel, or delete the Slack node. The sheet is written before it.
  6. Open the settings node of the template (for example Search settings) and put your own values in. Every template starts with a sticky note Read me first with the same steps.
  7. Press Execute workflow once, then turn the schedule on.

Note

Each template ships with a credential-id placeholder and YOUR_SPREADSHEET_ID. n8n shows those nodes with a warning triangle until you replace them. That is your checklist.

Errors you may see

The tool dropdown is empty
The node could not reach the gateway or sign in. Check the Endpoint URL has no trailing space and that the token is the whole sw_live_... key with no Bearer in front.
HTTP 401
Bad key. Copy it again from the portal, or make a new one.
HTTP 403 scope_rejected
The tool needs a Full key. The paid tools and anything that creates or runs a scraper need one.
HTTP 402
The wallet has no balance and no free requests. Top up, then run again. See Wallet and billing.
The Code node gets nothing
The rows sit inside the MCP answer. Read structuredContent or parse content[0].text. Rows of a group are under content, not rows.
It charged twice when I retried
Send the same idempotency_key inside body on the retry. Identical requests within 24 hours are charged once.

Questions

Do I need an OpenAI key or an AI Agent node?

No. The node calls one named tool with the arguments you wrote.

Which key does a template need?

Template 2 needs a Read key. Templates 1, 3, 4, 5 and 6 need a Full key.

Can I change the schedule?

Yes. Every schedule is a plain n8n Schedule Trigger. Open it, or swap it for a webhook.

The six templates

#TemplateWhat you getRunsTool it calls
1Local business lead listName, address, phone, website, rating, reviews and category for a search in a place, filtered down to the contactable ones, plus a Slack digestWhen you press the buttonfind_local_businesses
2Competitor price monitorEvery product where a competitor is cheaper than you, with the gap in € and %Daily, 08:00scrapewise_get_scraper_data_group_client
3Amazon price trackerTitle, ASIN, price, rating and reviews for your keywords, one dated row eachDaily, 07:00search_amazon
4Google rank trackerThe position your domain holds for each keyword, or “not in top results”, plus Slack alerts on slips and drop-outs and one daily digestDaily, 06:00google_search
5Google review watcherEvery review of the places you watch, plus a Slack alert on the bad onesDaily, 09:00scrapewise_run_scraper_url_list
6YouTube keyword watchWhich videos rank for your topics, with your own channel flagged, plus a Slack alert on videos published that weekWeekly, Monday 09:00scrapewise_run_scraper_url_list

1. Local business lead list

Download: 01-google-maps-leads-to-google-sheets.json

Searches Google Maps for a trade in a place, drops the businesses you cannot act on, appends the rest to a sheet, and posts one Slack digest saying how many leads came in.

TriggerManual - you press Execute workflow
ColumnsName, Address, Phone, Website, Rating, Reviews, Category
Cost10 credits per call = €0.0015 for up to 20 places
KeyFull
Also needsSlack, for the digest in leads

Set query, location, country, language and max_results in Search settings. One call returns up to 20 places.

Two filters run before the sheet, both set in Search settings:

SettingShips asWhat it drops
-always onBusinesses with no website, since there is nothing to follow up
min_rating4Businesses rated below this
min_reviews5Businesses with fewer ratings than this, where the score means little

So the sheet holds leads you can contact rather than everything Google listed. Set min_rating to 0 and min_reviews to 0 to keep them all. Notify new lead then posts how many leads came in and the first ten by name, category, rating and contact, so you do not have to open the sheet to know whether the run was worth it.

Google Maps holds no e-mail addresses, so none are returned. The Website column is the starting point if you need e-mail: send those websites to the Website contacts endpoint as a second step. The template itself does not do that step.

To see the price before you spend anything, set quote_only to true in Search settings. The workflow then writes one row holding the quote and your wallet balance instead of leads.

2. Competitor price monitor

Download: 02-competitor-price-monitor-with-matching.json

Reads a price-monitor group you already have in Scrapewise, groups the rows by the column that matches your product to the competitor’s (usually EAN), and keeps only the products where a competitor is cheaper than you. Writes the gaps to a sheet and sends one Slack message with the ten biggest.

TriggerDaily, 08:00
ColumnsDate, Match key, Product, My price, Cheapest competitor, Their price, Gap €, Gap %
CostFree - it reads rows you already paid to scrape
KeyRead
Also needsSlack, for the ten biggest gaps in #pricing

This template does not scrape. It reads what your scrapers already collected, so set the scrapers up first - the build-scrapers skill does that for you, or do it in the portal.

In Monitor settings, put in:

SettingWhat it is
groupIdThe group holding your prices and your competitors’
matchColumnThe column both sides share, usually ean
shopColumnThe column saying which shop a row came from
priceColumnThe column holding the price
myShopThe value in shopColumn that means you
rowsToReadHow many rows to read per run

If a column name is wrong the workflow stops and the error message lists the column names the group actually has, so you can copy the right one straight out of it.

Prices written as 1.234,56 and 1,234.56 are both read correctly.

3. Amazon price tracker

Download: 03-amazon-price-tracker-to-google-sheets.json

Every morning, searches Amazon for each of your keywords and appends what it sells, with the date. Leave it running and the sheet becomes a price history you can chart.

TriggerDaily, 07:00
ColumnsDate, Title, ASIN, Price, Rating, Reviews, Link
Cost1 credit per result page = €0.00015 per keyword per page
KeyFull

Set queries, marketplace and pages in Keywords and marketplace.

Marketplaces: com, co.uk, de, fr, it, es, ca, com.au, co.jp, in, com.br, com.mx, nl, sg, ae, sa, pl, se, com.tr, eg, com.be.

One keyword and one page answers straight away. Two or more run as a background job, so the template has an If node and a Wait node that pick the rows up with get_results. If a long list is not finished in time, raise the wait.

One answer carries one page of rows. If Get job results comes back with truncated: true and a nextPage, there are more rows waiting. The template saves the first page, which is plenty for a handful of keywords. For a long list, send that nextPage value back into Get job results as page and keep going until truncated is false.

4. Google rank tracker

Download: 04-google-serp-rank-tracker.json

Every morning, searches Google for each keyword, looks for your domain in the results, writes the position you hold - or not in top results - and tells you in Slack when a keyword slips or falls out altogether.

TriggerDaily, 06:00
ColumnsDate, Keyword, Country, Position, URL, Page title
Cost10 credits per keyword = €0.0015 per keyword per day
KeyFull
Also needsSlack, for the alerts and the digest in seo-alerts

Set domain, keywords, country and language in Keywords and domain.

google_search with type web takes one keyword per call, so the template loops over your list one keyword at a time with a Loop Over Items node. Ten keywords a day costs €0.015.

The domain match ignores www., so scrapewise.ai matches https://www.scrapewise.ai/pricing.

Three Slack messages come out of it, and they answer different questions:

NodeFires whenWhy it is separate
Ranking warningA keyword ranks worse than alert_belowA slip inside the results is worth a look, not a panic
Rank alertA keyword is not in the results at allA drop-out is the serious one, so it reads differently
Daily ranking digestOnce per run, after the sheet is writtenThe whole picture in one message, whether or not anything slipped

The two per-keyword messages are exclusive, so a keyword produces one of them or neither - never both.

alert_below ships as 20, in Keywords and domain. It is the position you stop caring about: 20 means you are told when a keyword falls past 20. Lower it to 5 to hear about smaller slips, or raise it past the results you ever see to silence Ranking warning entirely. It does not affect Rank alert - a drop-out is always reported - and the digest arrives either way.

The digest reads the rows back out of the sheet rather than the search answers, so it reports what was actually saved. It only counts rows carrying today’s date, so a sheet holding months of history still produces a one-day summary.

5. Google review watcher

Download: 05-google-maps-reviews-monitor.json

Every morning, reads the reviews of the places you list, saves them all to a sheet, and sends a Slack message for every review at or below your star threshold.

TriggerDaily, 09:00
ColumnsDate, Place, Stars, Author, Review, Posted, Review id, Needs attention
CostFrom €0.00015 per place read. The first step answers with estimatedMicroCents - what that run will cost. 1,000,000 micro-cents = €0.01
KeyFull
Also needsSlack, for the low-star alerts in reviews

Create an empty group of its own in the portal for this workflow and put its id in Places to watch. The read step returns everything in the group, so a shared group would mix other data in.

Place URLs need the place’s data_id, and the link you copy out of the Google Maps address bar does not carry one. Run template 1 (or the find_local_businesses tool) for the business - every result has a data_id that looks like 0x4692935f7b0b17f5:0xb136062b9dd26adb. Put it in a link of this shape, one per place:

https://www.google.com/maps/place/?data_id=0x4692935f7b0b17f5:0xb136062b9dd26adb

Each run writes today’s reviews again, so a review appears once per run with that day’s date. Sort or pivot the sheet on Review id to see each review once.

Set alertAtOrBelowStars to the threshold you want - 3 means three stars and below get a Slack message.

force is on, so you get fresh reviews every day and every place is read and charged each run.

If the sheet comes out empty, raise the wait in Give it two minutes - a long list takes longer.

6. YouTube keyword watch

Download: 06-youtube-keyword-watch.json

Every Monday, searches YouTube for each of your keywords, saves what comes up, and posts a Slack message for each video published in the last week. Run it weekly and the sheet shows which videos are gaining on your topics, and which of them are yours.

TriggerWeekly, Monday 09:00
ColumnsDate, Title, Channel, Views, Length, Published, Link, Mine
CostFrom €0.00015 per search read. The first step answers with estimatedMicroCents
KeyFull
Also needsSlack, for the new-video alerts in youtube-alerts

Create an empty group of its own in the portal and put its id in Keywords to watch, same as template 5.

Put your keywords in plain words - the workflow turns each one into a YouTube search link itself. Add your own channel name as myChannel and the Mine column flags your videos.

The whole result set goes to the sheet; only the fresh part is worth interrupting you for, so Published this week? keeps the videos published less than eight days ago and New video alert posts each one with its channel, views, length and link. Everything older is already in the sheet and no message is sent.

Two things to know about that filter. It reads YouTube’s own published date, which arrives as wording like 3 days ago rather than a date, so the age is derived from that wording and a phrasing it cannot parse is treated as old rather than new. And because the schedule and the window are both about a week, a video posted a few hours before one Monday can still be inside the window on the next - expect the occasional repeat rather than a missed video.

The alert covers every channel, including yours. If you only want other people’s, add a condition on isMine being false alongside the one already in Published this week?.

Templates 5 and 6 both send their list under a name. If you add or remove a place or a keyword later, change that name too - Scrapewise refuses a different list sent under a name it already knows.

How the templates are put together

Useful if you want to change one, or copy the pattern into a workflow of your own.

PieceWhat it does
MCP Client Tool node, HTTP Streamable, Bearer AuthCalls one named Scrapewise tool. No AI model involved
JSON input, not fieldsThe arguments are written as JSON so you can see exactly what is sent
A Code node after every callParses the answer and unwraps scraped text before it reaches the sheet
The sheet written before any Slack nodeThe data is saved whether or not an alert goes out, so deleting a Slack node loses nothing
An If node in front of the per-item alerts (4, 5, 6)Decides which single row is worth a message. The digests in 1, 2 and 4 need no condition - they summarise the run and go out every time
A sticky note on every canvasSetup steps and the cost, inside n8n

Three details the Code nodes handle for you:

  • The answer arrives in one of two shapes. Already parsed in structuredContent, or as a string in content[0].text, depending on your n8n version. Every Code node reads both.
  • Scraped strings are wrapped. { "type": "scraped", "content": "…", "origin": "…" } marks text a stranger wrote on a web page. The Code nodes unwrap it to a plain string. Never let a later AI step treat it as an instruction - see MCP safety.
  • Reading a group’s rows returns a page. The rows are under content, not rows.

All six templates point at https://mcp.scrapewise.ai/mcp. Template 2 only reads rows you already collected, so a Read key is enough for it; the other five scrape and need a Full key.

Five of the six also post to Slack, so they need a Slack OAuth credential on top of the Scrapewise one. Only template 3 runs without it.

Good to know

  • Check the price first. Templates 1 and 3 have a quote_only setting: turn it on and the call returns the price and your wallet balance without scraping. Templates 5 and 6 answer with estimatedMicroCents before the run starts.
  • Start with one. One keyword, one place, one product. The cost per run is then obvious and the schedule can be turned on afterwards.
  • A retry does not charge twice. Add the same idempotency_key inside body and identical requests within 24 hours are charged once.
  • Three jobs at a time. An account can have three background jobs running. A fourth is refused until one finishes.
  • Change the schedule freely. Every schedule in these files is a plain n8n Schedule Trigger - open it and set whatever you want, or swap it for a webhook.

Last updated 4 November 2026