Square Online Menu Scraper avatar

Square Online Menu Scraper

Pricing

Pay per event

Go to Apify Store
Square Online Menu Scraper

Square Online Menu Scraper

🍽️ Export public Square Online menus with exact prices, categories, locations, images, availability, variations, SKUs, and modifier choices.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Extract structured restaurant menus from public Square Online sites.

Square Online Menu Scraper turns *.square.site ordering pages into clean records containing menu items, categories, exact prices, images, locations, availability, variations, SKUs, and modifiers.

It reads Square's public catalog data directly, so you get source-native IDs and price subunits instead of OCR guesses or brittle page text.

What does Square Online Menu Scraper do?

Give the Actor one or more public Square Online merchant URLs.

It discovers the merchant's current catalog configuration, finds every public store location, paginates the menu, and saves one product-location record per dataset row.

Use it to:

  • 🍽️ export complete Square restaurant menus;
  • 💵 monitor prices and sale state;
  • 🚫 track sold-out or unavailable products;
  • 🔄 migrate catalogs into another ordering system;
  • 🧩 capture variation and modifier choices;
  • 📊 build restaurant and food-tech datasets.

Why use a source-specific Square menu scraper?

General menu scrapers must handle arbitrary HTML, PDFs, and images.

That flexibility often means OCR, AI interpretation, missing identifiers, or uncertain prices.

This Actor focuses on Square Online's public structured catalog.

The result includes exact product IDs, location IDs, integer price subunits, SKU variations, inventory flags, and modifier choices that are useful in production workflows.

Who is it for?

Restaurant-data vendors

Collect normalized menu snapshots for analytics, enrichment, and delivery applications.

Catalog migration teams

Map source product IDs, categories, variations, and modifiers into a new POS or storefront.

Food-tech developers

Feed structured Square menu records into search, recommendation, ordering, or comparison products.

Market researchers

Compare product mix, categories, prices, and availability across public merchants.

Price and availability monitors

Schedule repeat runs and compare stable IDs and timestamps between snapshots.

What data can you extract?

Field groupExamples
Merchantname, merchant ID, site URL, currency
Locationlocation ID, display name, address
Productproduct ID, name, description, type, URL
Categoriescategory IDs and category names
Priceslow/high numeric, formatted, and subunit values
Availabilitysold out, fulfillable, inventory enabled, total
Mediaprimary image and all image URLs
VariationsSKU ID, name, SKU, exact price, sold-out state
Modifiersgroups, min/max selections, choices, add-on prices
FreshnessSquare update timestamp and scrape timestamp

Input

The main input is startUrls.

Each URL must be a public Square Online host ending in .square.site.

{
"startUrls": [
{ "url": "https://alpha-coffee-107652.square.site/" }
],
"maxItems": 10,
"includeDetails": true,
"includeUnavailable": true
}

Input fields

FieldTypeDefaultDescription
startUrlsarrayrequiredPublic Square Online merchant URLs
maxItemsinteger10Combined result limit across sites and locations
includeDetailsbooleantrueFetch variations, SKUs, and modifiers
includeUnavailablebooleantrueKeep sold-out and unavailable products
locationIdsstring arrayallRestrict extraction to known Square locations

How to scrape a Square Online menu

  1. Open the public Square Online ordering site.
  2. Copy its https://...square.site/ URL.
  3. Add the URL under Square Online merchant URLs.
  4. Keep maxItems small for your first run.
  5. Enable details when you need sizes or modifier choices.
  6. Click Start.
  7. Export the dataset as JSON, CSV, Excel, XML, or another supported format.

Scrape one Square location

Merchants may expose more than one public pickup location.

To target one location, pass its Square location ID:

{
"startUrls": [
{ "url": "https://alpha-coffee-107652.square.site/" }
],
"locationIds": ["L7C77T70MZ0Y8"],
"maxItems": 100
}

The Actor fails clearly when none of the requested IDs exists on the site.

Output example

{
"merchantName": "Alpha Coffee",
"merchantId": "MLJG3BW9G97XD",
"merchantUrl": "https://alpha-coffee-107652.square.site/",
"currency": "USD",
"locationId": "L7C77T70MZ0Y8",
"locationName": "Alpha Coffee Cafe",
"productId": "2MIV2LR5OPDTJC5RKLSZWBG3",
"productName": "Dirty Chai Frappe",
"categoryNames": ["Frappes"],
"priceLow": 6.75,
"priceHigh": 7.75,
"priceLowSubunits": 675,
"priceHighSubunits": 775,
"soldOut": false,
"onSale": true,
"variations": [],
"modifiers": [],
"productUrl": "https://alpha-coffee-107652.square.site/product/...",
"scrapedAt": "2026-07-16T00:00:00.000Z"
}

Optional properties are omitted when Square does not expose them.

Arrays are always present, which makes downstream processing predictable.

Variations, SKUs, and modifiers

Set includeDetails to true to request product detail and SKU routes.

Variations can include:

  • variation or SKU ID;
  • display name such as size;
  • merchant SKU when present;
  • numeric, formatted, and subunit prices;
  • sold-out and inventory state.

Modifier groups include visible choices, add-on prices, selection limits, defaults, and sold-out state where Square exposes them.

Set details to false for faster lightweight item and price snapshots.

Price and availability monitoring

Use Apify Schedules to run the Actor hourly, daily, or weekly.

Keep includeUnavailable enabled so disappeared availability is visible as data rather than silently filtered.

Recommended comparison keys are:

  • merchantId;
  • locationId;
  • productId;
  • variation id;
  • modifier choice id.

Compare price subunits rather than formatted strings when calculating changes.

How much does it cost to scrape Square Online menus?

The Actor uses pay-per-event pricing.

A small one-time start event covers initialization, and each saved menu item is charged as an item event.

Account tiers receive decreasing per-item rates.

Your exact maximum charge is visible in Apify Console before and during the run.

Use maxItems to set a deterministic extraction ceiling.

Because the Actor uses public HTTP catalog routes rather than a full browser or OCR pipeline, runs are designed to remain lightweight.

API usage with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/square-online-menu-scraper').call({
startUrls: [{ url: 'https://alpha-coffee-107652.square.site/' }],
maxItems: 50,
includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/square-online-menu-scraper').call(run_input={
'startUrls': [{'url': 'https://alpha-coffee-107652.square.site/'}],
'maxItems': 50,
'includeDetails': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

API usage with cURL

curl -X POST \
'https://api.apify.com/v2/acts/automation-lab~square-online-menu-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"startUrls": [{"url": "https://alpha-coffee-107652.square.site/"}],
"maxItems": 50,
"includeDetails": true
}'

Fetch results from the run's default dataset after it succeeds.

MCP integration

Use the Actor through Apify's MCP server from Claude Code, Claude Desktop, Cursor, or VS Code.

Claude Code setup

$claude mcp add --transport http apify 'https://mcp.apify.com/?tools=automation-lab/square-online-menu-scraper'

Claude Desktop and Cursor setup

Add this configuration under mcpServers in Claude Desktop or Cursor and provide your Apify token through the client authentication flow:

{
"mcpServers": {
"apify-square-menu": {
"type": "http",
"url": "https://mcp.apify.com/?tools=automation-lab/square-online-menu-scraper"
}
}
}

VS Code setup

Add the same HTTP MCP URL through MCP: Add Server, name it apify-square-menu, and authenticate with your Apify account.

Example prompts:

  • “Scrape the first 50 items from this Square Online restaurant menu.”
  • “Return sold-out products and all variation prices for this Square site.”
  • “Extract this merchant's modifier choices for catalog migration.”

Integrations

Google Sheets and Excel

Export scheduled snapshots for analysts and operations teams.

Webhooks

Trigger an ETL job when a menu run succeeds.

Make and Zapier

Send new or changed products into no-code workflows.

Cloud storage and databases

Use dataset APIs to load records into BigQuery, Snowflake, PostgreSQL, or an object store.

AI assistants

Connect through MCP and ask for category, price, or availability summaries grounded in current public catalog data.

Tips for reliable runs

  • Use the merchant's public home or order-online URL.
  • Keep the hostname ending in .square.site.
  • Start with maxItems: 10 to inspect the shape.
  • Disable details when only names, categories, and price ranges are needed.
  • Use location IDs to prevent intentional duplicate products across branches.
  • Store product and location IDs for stable comparisons.
  • Schedule complete snapshots at a cadence appropriate for the merchant.

Limitations

The Actor supports public *.square.site merchant sites.

It does not log into Square Dashboard, access private seller data, place orders, or use a seller's official OAuth catalog.

A merchant can remove products, disable ordering, restrict a location, or unpublish a site at any time.

Square may change its public frontend or catalog API.

The Actor discovers live merchant identifiers and cache versions to reduce dependence on hard-coded values, but upstream changes can still require maintenance.

Category names come from the public site bootstrap; unknown category IDs remain available in categoryIds.

Troubleshooting

“Unsupported host”

Provide the public Square Online URL, not a Square Dashboard, checkout, social, or custom-domain URL.

“Bootstrap state was not found”

Confirm the page opens publicly and is a current Square Online site.

Try the merchant homepage instead of a deep checkout link.

No matching locations

Remove locationIds to list data from every public location, or verify the IDs from an earlier run.

Fewer items than expected

Increase maxItems, enable unavailable products, and check whether the merchant has multiple locations.

Run fails after a Square site change

Inspect the run log and report the public URL through the Actor's issue form so the extraction route can be updated.

This Actor extracts information already exposed on public merchant pages and anonymous catalog endpoints.

Scraping legality depends on your jurisdiction, purpose, data type, and contractual obligations.

Do not use the Actor to collect private information, bypass access controls, overload a site, or violate applicable laws and terms.

You are responsible for your input URLs, retention policy, and downstream use.

When in doubt, consult qualified legal counsel.

FAQ

Does it require a Square login or API key?

No. It reads the public menu surface visible to ordinary visitors.

Does it use OCR or AI to guess prices?

No. Prices and IDs come from Square's structured public catalog response.

Can it scrape several merchants in one run?

Yes. Add several Square Online URLs and set a combined maxItems limit.

Can it return sold-out products?

Yes. includeUnavailable defaults to true.

Can it return modifiers and size variations?

Yes. Keep includeDetails enabled.

Why can the same product appear more than once?

Rows are product-location records. The same product may intentionally be offered at several merchant locations.

Can it scrape custom domains powered by Square?

The current product contract accepts *.square.site URLs so scope is explicit and validation fails closed.

Combine this Actor with other Automation Lab actors when you need a broader restaurant-data workflow:

Use this Actor when your source of truth is a public Square Online merchant catalog.

Support

If a valid public Square Online site stops working, open an issue from the Actor page.

Include:

  • the public merchant URL;
  • whether the page opens in a normal browser;
  • the expected product or location;
  • a run ID when available.

Do not include private Square credentials or customer data.

Start extracting Square menus

Add a public *.square.site URL, keep the first run small, and inspect the structured dataset.

Then scale the result limit, target locations, schedule snapshots, or connect the Actor to your existing data pipeline.