Amazon to Google Sheets via Olostep, clean product lists
Copying Amazon results into a spreadsheet sounds simple. Then you do it for 8 pages, URLs break, titles get messy, and you still don’t trust the list.
This Amazon Sheets automation hits e-commerce analysts hardest, but product sourcing teams and agency marketers feel it too. You end up spending about an hour just assembling a list you can actually work with.
This workflow pulls clean product titles and full URLs into Google Sheets (or a Data Table) automatically, so you can filter, share, and analyze without the tedious “copy, clean, fix” loop.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Amazon to Google Sheets via Olostep, clean product lists
flowchart LR
subgraph sg0["On form submission Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>scrape amazon products"]
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "parsedInfo", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Insert row", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>On form submission"]
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out2", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields1", pos: "b", h: 48 }
n4 --> n10
n4 --> n6
n5 --> n3
n2 --> n4
n6 --> n5
n9 --> n3
n1 --> n2
n8 --> n9
n10 --> n6
n3 --> n0
n7 --> n8
n0 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n7 trigger
class n4 decision
class n0 api
classDef customIcon fill:none,stroke:none
class n0,n7 customIcon
Why This Matters: Clean Amazon product lists without busywork
When you’re doing market research, the slow part isn’t “finding products.” It’s turning a messy search results page into a clean dataset you can sort, dedupe, and share. Titles wrap onto multiple lines. Amazon links show up as shortened or relative URLs. And if you’re checking more than one page, you’re repeating the same actions over and over, hoping you didn’t miss anything important. Frankly, this is where good research gets delayed or abandoned.
The friction compounds quickly. Here’s where it breaks down in real life.
- Manual copy/paste across 5–10 pages turns into a long, error-prone cleanup session in Google Sheets.
- Relative or “tracking-heavy” URLs make your sheet hard to use, especially when teammates try to open links later.
- It’s easy to accidentally collect navigation links, sponsored blocks, or non-product items and not notice until you start filtering.
- You can’t scale the process for multiple keywords without turning it into a recurring weekly task.
What You’ll Build: An Amazon scraper that writes clean rows to Sheets
You’ll set up an n8n workflow that takes a simple Amazon search query (like “wireless bluetooth headphones”) and turns it into a structured spreadsheet. The workflow generates a list of result pages to scrape (by default, pages 1 through 10), then sends each page to the Olostep API for extraction. Olostep returns a clean JSON payload with product titles and URLs, and n8n splits that data into individual rows. From there, the workflow checks each URL, converts relative links into full Amazon product URLs when needed, and only saves valid items. Finally, it appends the cleaned product list into Google Sheets or an n8n Data Table so you can filter and analyze immediately.
The workflow starts with a form submission where you enter your keyword. Then it loops through a set of page numbers, requests scraped results via HTTP, and normalizes every product row. A short wait step keeps the whole process stable when scraping multiple pages back-to-back.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you research 5 keywords a week and you want the first 10 Amazon pages for each. Manually, grabbing titles and links and cleaning them usually takes about 45 minutes per keyword, so that’s roughly 4 hours a week. With this workflow, you type the keyword once, let it run for about 10–20 minutes, and your table is ready. You still review and filter, but the copy/paste work mostly disappears.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Olostep for scraping Amazon results via API
- Google Sheets to store and share clean product lists
- Olostep API key (get it from your Olostep dashboard)
Skill level: Beginner. You’ll connect accounts, paste an API key, and choose where results get saved.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A form submission kicks things off. You enter a search query, and n8n uses that phrase to build the base Amazon search URL you want to scrape.
Page numbers are generated and looped. The workflow creates a list of pages (like 1 through 10), then iterates through them in batches so it can scrape each results page in a controlled way.
Olostep extracts products through an HTTP request. For each page URL, n8n calls the Olostep API and receives structured data back, then splits the JSON into individual product items.
Rows are cleaned and stored. n8n checks whether each URL looks valid, normalizes relative links into full Amazon URLs, and appends the final title + URL to Google Sheets (or an n8n Data Table). A short wait reduces rate-limit headaches.
You can easily modify the pagination range (say, 1–20) or the fields you save (like price or rating) based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Form Submission Trigger
Set up the form that kicks off the workflow and captures the search query used for scraping.
- Add the Form Submission Trigger node and open its settings.
- Set Form Title to
Olostep Amazon Products Scraper. - Set Form Description to
please fill all fields. - Under Form Fields, add a field with Field Label
search queryand Placeholderwireless bluetooth headphones.
Step 2: Connect the Page List Expansion
Create a list of page numbers and split them into individual items for batching.
- Add the Initialize Page List node and set an array assignment named counter to
[1,2,3,4,5,6,7,8,9,10]. - Add Expand Page Numbers and set Field to Split Out to
counter. - Connect Form Submission Trigger → Initialize Page List → Expand Page Numbers.
Step 3: Set Up Batch Processing and Scraping
Iterate through page numbers in batches and send each page to the scraping API.
- Add Batch Iterator and connect Expand Page Numbers to its input.
- Add Request Product Scrape and set URL to
https://api.olostep.com/v1/scrapesand Method toPOST. - In Request Product Scrape, set JSON Body to
{ "url_to_scrape": "https://www.amazon.com/s?k={{ $('Form Submission Trigger').item.json['search query'] }}&page={{ $json.counter }}", "formats": [ "json" ], "wait_before_scraping": 6000, "remove_css_selectors": "default", "llm_extract": { "schema": { "type": "array", "description": "A list of products listed on Amazon.", "items": { "type": "object", "properties": { "title": { "type": "string", "description": "The title of the product." }, "url": { "type": "string", "description": "The full url for the product." } }, "required": [ "title", "url" ] } } }, "screen_size": { "screen_type": "desktop", "screen_width": 1920, "screen_height": 1080 } }. - In Request Product Scrape, add a header with Authorization set to
Bearer [CONFIGURE_YOUR_TOKEN]. - Connect Batch Iterator → Request Product Scrape.
[CONFIGURE_YOUR_TOKEN] with a valid Olostep API token or the request will fail.Step 4: Parse, Validate, and Normalize Product Data
Extract JSON from the scrape result, expand products, validate URLs, and normalize fields.
- Add Parse Result Data and set a field parsedJson with value
{{ $json.result.json_content.replace(/\\/g, '') }}. - Add Expand Parsed List and set Field to Split Out to
parsedJson. - Add Validate URL Prefix and configure the condition: String notStartsWith with Left Value
{{ $json.url }}and Right Valuehttps://www.amazon.com. - Add Normalize Product Fields and set url to
=https://www.amazon.com{{ $json.url }}and title to{{ $json.title }}. - Connect Request Product Scrape → Parse Result Data → Expand Parsed List → Validate URL Prefix.
- From Validate URL Prefix, route the true output to Normalize Product Fields, and the false output directly to Append to Data Table.
Step 5: Configure the Data Table Output and Delay
Save each product and throttle requests between batches.
- Add Append to Data Table and choose a Data Table from Data Table ID (currently
[YOUR_ID]). - In Append to Data Table, map url to
{{ $json.url }}and title to{{ $json.title }}. - Add Delay Step and connect Append to Data Table → Delay Step → Batch Iterator to continue looping.
[YOUR_ID] will prevent data from being saved.Step 6: Test and Activate Your Workflow
Verify a full run and then enable the workflow for production use.
- Click Execute Workflow and submit the form in Form Submission Trigger with a sample
search query. - Confirm each page number passes through Batch Iterator and that Request Product Scrape returns JSON.
- Check that products are split in Expand Parsed List, validated in Validate URL Prefix, normalized in Normalize Product Fields, and appended in Append to Data Table.
- When the output looks correct, toggle the workflow to Active to use it in production.
Troubleshooting Tips
- Olostep credentials can expire or be tied to a workspace. If the scrape fails, check your Olostep API key in n8n Credentials and confirm it’s still active in the Olostep dashboard.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Google Sheets can silently fail if the target sheet name or columns don’t match what the workflow expects. Open the n8n execution details, then verify the sheet/tab and header row before you rerun.
Quick Answers
About 20–40 minutes if Olostep and Google Sheets are ready.
No. You’ll mainly paste an API key, connect Google Sheets, and choose how many pages to scrape.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Olostep API costs based on your scraping volume.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it’s the main reason people keep this workflow around. You can expand the pagination in the “Initialize Page List” step, change the storage target from the Data Table node to Google Sheets, and add more fields in “Normalize Product Fields” once Olostep returns them. Common tweaks include ignoring sponsored results, adding price/rating/review count, or running multiple keywords on a schedule instead of using the form trigger.
Usually it’s an invalid or expired API key in n8n Credentials. If the key is fine, check whether Olostep is rejecting the request because of plan limits, and review the HTTP node response in the n8n execution log to see the exact error message.
It can comfortably handle dozens of pages per run; the practical limit comes from your n8n execution limits (on Cloud) and your Olostep API plan.
Often, yes, because scraping workflows tend to need looping, batching, waits, and conditional cleanup. n8n handles that kind of logic without turning it into a maze of separate Zaps or scenarios. You also get a clearer view of each run (the execution log is genuinely useful when a scrape returns unexpected data). If you self-host, you’re not paying per-task the same way, which matters when you loop through 10+ pages. Zapier or Make can still be fine for simpler “send this row there” automations. Talk to an automation expert if you’re not sure which fits.
Once this is running, building a clean Amazon product dataset becomes a repeatable habit instead of a dreaded chore. Set it up, run it when you need it, and move on to the analysis that actually pays off.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.