# Pull numbers from supplier, carrier and utility portals

> Open one screen every Monday to refresh every portal your team logs into by hand, see the latest figures, and watch a replay when a number looks wrong.

- Workflow type: app
- Services: Anchor Browser, Google Sheets
- Categories: Operations, Finance
- Published: 2026-08-14

## What it does

- A card for every portal you track, showing what you pull from it, which saved login it uses, when it was last refreshed, and the figures from the last pull, with a stale badge once it passes your refresh window
- Refresh one portal or all of them at once. A cloud browser signs in with a saved login, works through your instructions for that portal, and lays the numbers out in a sortable table
- Every refresh is recorded on video. When a figure looks off, open that portal and watch exactly what the browser did to get it, instead of guessing why a scraper broke
- Your portal list and the instructions for each portal live in a Google Sheet you can edit right inside the app, and every refresh appends a dated row so the team can see movement over time

## What you'll need

- An Anchor Browser account, which provides the cloud browser that signs into portals and records what it does
- A Google account and a spreadsheet with one tab for your portal list and one tab for refresh history
- A working login for each portal you want to pull from, which someone signs into by hand once inside the app
- The start URL for each portal and a short description of which figures to pull from it

## Prompt

Build me an internal app my operations team opens every Monday to pull numbers out of the supplier, carrier, utility and government portals that have no API. Everything the app knows about which portals to visit lives in a Google Sheet, and everything it pulls goes back to that sheet, so the team keeps working in a tool they already trust.

The main screen is a board with one card per portal. Each card shows the portal name, a short line describing what we pull from it, which saved browser profile it signs in with, when it was last refreshed, and the figures from the most recent pull. If the time since the last refresh is longer than that portal's configured refresh window, put a clear Stale badge on the card. Each card has its own Refresh button, and there is a Refresh all button at the top of the board that kicks off every portal at once, with per card progress so people can see which ones are still running.

Refreshing a portal calls Anchor Browser Perform Web Task against that portal's start URL, passing that portal's extraction instructions as the task and its saved profile so the browser is already signed in. Run it asynchronously and poll Get Perform Web Task Status until it reports finished or failed, keeping a live status on the card the whole time. When it completes, parse the extracted rows and render them into a sortable table on that portal's detail view. Hold on to the browser session id from the run so the recording can be played back later. If a run fails, or the saved profile is no longer signed in, show the error on the card and prompt someone to redo that portal's login rather than quietly leaving stale numbers on screen.

Every completed refresh appends a dated row to a history tab in the same Google Sheet using Append Values: one row per portal per refresh, carrying the date, the portal name and the figures pulled. The portal detail view lists that history so the team can see movement over time, and lets someone sort or filter it by date.

The portal detail view also plays the run back. Use List Session Recordings for the browser session behind a run to get the available recordings, and Get Session Recording to fetch the file, then show it in a video player inside the app. This is the whole point of using a cloud browser instead of a scraper: when a number looks wrong, someone can watch exactly what the browser did, which page it landed on, and whether it read the right field. Let people play back any run in the history list, not just the most recent one.

Read the portal list from a Google Sheets tab with Get Values. Each row is one portal: portal name, start URL, the extraction instructions for that portal, which saved profile to use, and the refresh window that drives the stale badge. Show those fields as inline editable cells in the app, and write edits back to the sheet with Update Values so the sheet stays the source of truth. Adding a row in the sheet adds a card to the board, and editing the instructions for a portal changes what the next refresh pulls.

Logins are set up once inside the app on a separate Logins screen, and no portal passwords are ever stored in the app. To add a login, call Start Browser Session and embed the returned live view so the person can drive that browser by hand and sign into the portal themselves, including any two factor step. When they click Save login, call Create Profile to persist that signed in session as a reusable named profile, then End Browser Session to close the live browser. List the saved profiles alongside the portals that use them, and give each one a Delete button that calls Delete Profile, which is what someone uses when credentials rotate.

Keep the app to three surfaces: the portal board, the portal detail view with the extracted table plus history and recording playback, and the Logins screen. Do not add Slack or email notifications of any kind, and do not build a credits or spend view for Anchor Browser.

## How to customize

- Set a different refresh window per portal so a weekly carrier report and a quarterly utility bill get their stale badges at the right time
- Rewrite the pull instructions for any portal in the spreadsheet when a site moves things around, without touching the app itself
- Add or remove portals by editing rows in the spreadsheet, and reuse one saved login across several portals from the same provider

## FAQ

### Does this store our portal passwords?

No. Someone signs in to each portal by hand, once, in a live browser window inside the app. The app saves the resulting signed-in session as a reusable profile, not your credentials. You can delete that saved profile at any time, which is what you do when passwords rotate.

### Will it work on portals that require two-factor authentication?

In most cases, yes. Because a person signs in by hand when the login is first set up, they can complete a two-factor prompt at that moment. The saved session is reused for later refreshes until the portal expires it, at which point you redo the one-time sign in.

### What happens if a portal changes its layout and a number comes back wrong?

Open that portal's detail view and watch the recording of the run to see exactly which pages the browser visited and which field it read. Then edit that portal's instructions in the spreadsheet from inside the app and refresh again.

### Do we need a developer to add a new portal?

No. Add a row to the portal tab of your spreadsheet with the portal name, its start URL, what to pull, which saved login to use, and how often it should be refreshed. A new card appears on the board.

### How many portals can we track?

There is no fixed limit in the app. Refresh all runs each portal through a cloud browser, so the practical ceiling is how many browser sessions your Anchor Browser plan allows to run at the same time.

### Does this replace our ERP or procurement system?

No. It fills the gap left by suppliers, carriers, utilities and government sites that offer no data feed at all, so those numbers land next to everything else instead of living in ten separate logins.

Use this prompt in General Input: https://www.generalinput.com/prompts/pull-numbers-from-supplier-carrier-and-utility-portals