# Power Automate - Scrape.do Integration
> Source: https://scrape.do/documentation/integrations/power-automate/
Step-by-step guide to integrate Scrape.do with Power Automate through a custom connector for bulk web scraping flows
Scrape.do works in Power Automate as a custom connector with one action, **Scrape a URL**. A cloud flow reads URLs from a Google Sheet, scrapes each one through the connector and writes the rendered HTML back next to it.
Custom connectors are a premium feature: any flow that uses one needs a Power Automate Premium license or the free 90-day Premium trial.
## 1. Create the Custom Connector
To skip this step, import the connector package from the downloads below and go to step 2.
- Go to **Custom connectors** > **New custom connector** > **Create from blank** and name it `Scrapedo`.
- On the **General** tab:
- **Host** - `api.scrape.do`
- **Base URL** - `/`
- **Scheme** - HTTPS
- On the **Security** tab, choose **API Key** and set:
- **Parameter label** - `API Token`
- **Parameter name** - `token`
- **Parameter location** - **Query**
- On the **Definition** tab, add a **New action** with **Summary** `Scrape a URL` and **Operation ID** `ScrapeUrl`.
- Under **Request**, click **Import from sample**, choose **GET** and paste:
```plaintext
https://api.scrape.do/?url=https%3A%2F%2Fexample.com&render=true&returnJSON=true
```
- Open the `url` parameter and mark it **Required**. Leave `render` and `returnJSON` optional.
- Click **Create connector**.
Scrape.do reads the token from the `token` query parameter. Sent as a header, it returns an access-denied response.
## 2. Test the Connector
- On the **Test** tab, create a new connection and paste your API token from your [dashboard](https://dashboard.scrape.do).
- Run the action with **url** `https://example.com`, **render** `true` and **returnJSON** `true`.
- A status **200** with a body like `{"statusCode": 200, "content": "..."}` means the connector works.
> If you're unable to get a response, visit the [playground](https://dashboard.scrape.do/playground) and experiment with parameters like **Super**, **Render JavaScript**, and **Block Resources** until you get a successful response.
## 3. Prepare the Spreadsheet
Create a Google Sheet with two columns: `url` holds your target URLs, one per row, and `result` stays empty for the flow to fill. Clear `result` before every run.
## 4. Build the Flow
Create an **Instant cloud flow** with a **Manually trigger a flow** trigger and add these actions in order:
1. **Get rows** (Google Sheets) - Point it at your file and worksheet.
2. **Apply to each** - Set its input to the **value** output of Get rows.
3. **Scrape a URL** (your Scrapedo connector), inside the loop - Set **Url** to the `url` column and **render** to `true` for JavaScript-heavy pages.
4. **Update row** (Google Sheets), inside the loop - Set **File** and **Worksheet** to the same sheet and **Row id** to `__PowerAppsId__`.
## 5. Map the Scraped HTML
The action returns its body as a string, so parse it before you select `content`. In **Update row**, open the `result` field, switch to the expression (**fx**) editor and enter:
```plaintext
json(body('Scrape_a_URL'))?['content']
```
Save and run the flow. Each row's `result` cell fills with the scraped HTML.
**Downloads** (import the connector first, then the flow):
- **Scrape.do custom connector** (.zip)
- **Connector Swagger definition** (.json)
Full tutorial with every step: [How to Build a Bulk Web Scraper in Power Automate with Scrape.do (No Code)](/blog/power-automate-web-scraper/)