# QuickBooks App Store Scraper (`crawlerbros/quickbooks-app-store-scraper`) Actor

Scrape accounting & business integration apps from the Xero App Store - the leading open small-business app marketplace. Search by keyword, browse by category, or fetch apps by slug. Returns name, description, rating, review count, categories, regions, pricing type, and free-trial availability.

- **URL**: https://apify.com/crawlerbros/quickbooks-app-store-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Integrations, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## QuickBooks App Store Scraper

Scrape accounting and business integration apps from the **Xero App Store** — one of the largest open marketplaces for small-business software integrations covering payroll, invoicing, inventory, eCommerce, CRM, banking, and more.

> **Data Source:** The original QuickBooks App Store (`apps.intuit.com`) is protected by enterprise bot-management (Akamai) and does not serve content to cloud IPs. This actor uses the Xero App Store (`apps.xero.com`) as a freely-accessible substitute covering the same small-business accounting niche with 1,000+ apps. No API key, proxy, or login required.

---

### What you can scrape

| Mode | What it does |
|---|---|
| `search` | Full-text search across 1,000+ apps |
| `browse` | List apps by category (Payroll HR, Inventory, Ecommerce…) |
| `getBySlug` | Fetch specific apps by their URL slug |

---

### Input parameters

| Parameter | Type | Description |
|---|---|---|
| `mode` | string (required) | `search`, `browse`, or `getBySlug` |
| `query` | string | Keyword to search (mode=search) |
| `category` | string | App category for browse/filter |
| `region` | string | Country/region filter (AU, US, GB, global…) |
| `slugs` | array | App slugs for getBySlug mode |
| `minRating` | number | Minimum rating threshold (0–5) |
| `hasFreeTrial` | boolean | Return only apps with free trials |
| `maxItems` | integer | Maximum records to return (default 100) |

#### Category options

Accountant tools · Banking · Bills and expenses · Carbon accounting · Convert data to Xero · CRM and marketing · Debtor management · Documents · Ecommerce · Inventory · Invoicing and jobs · Loans, financing and credit · Payments · Payroll HR · Point of sale · Practice manager · Reporting and forecasting · Tax and compliance · Time tracking · Workflow builders

---

### Output fields

Each record contains:

| Field | Type | Description |
|---|---|---|
| `appId` | string | Unique app identifier |
| `name` | string | App name |
| `slug` | string | URL slug |
| `description` | string | Short description |
| `shortDescription` | string | Condensed tagline |
| `categories` | array | Functional categories |
| `industries` | array | Target industries |
| `regions` | array | Supported country codes |
| `rating` | number | Average star rating (0–5) |
| `reviewCount` | integer | Number of reviews |
| `revenueType` | string | Revenue model code (RS=subscription, etc.) |
| `hasFreeTrial` | boolean | Whether a free trial is offered |
| `logoUrl` | string | App logo image URL |
| `appUrl` | string | Full URL to the app's listing page |
| `recordType` | string | Always `"app"` |
| `scrapedAt` | string | UTC ISO-8601 timestamp |

---

### Example output

```json
{
  "appId": "9fc19fe0-d7c4-408b-a8bb-dd89b0653376",
  "name": "inFlow Inventory",
  "slug": "inflow-inventory",
  "description": "Track inventory and orders in inFlow and push financial information to Xero.",
  "categories": ["Inventory"],
  "industries": ["Retail", "Manufacturing", "Construction and trades"],
  "regions": ["AU", "CA", "HK", "US", "GB"],
  "rating": 4.8,
  "reviewCount": 5,
  "revenueType": "RS",
  "hasFreeTrial": true,
  "logoUrl": "https://images.ctfassets.net/8y4on51kf6pi/...",
  "appUrl": "https://apps.xero.com/au/app/inflow-inventory",
  "recordType": "app",
  "scrapedAt": "2026-05-30T10:00:00+00:00"
}
````

***

### FAQs

**Can I search for payroll apps?**\
Yes — use `mode: "search"` with `query: "payroll"`, or use `mode: "browse"` with `category: "Payroll HR"`.

**What regions are supported?**\
Global, Australia (AU), United Kingdom (GB), New Zealand (NZ), United States (US), Canada (CA), Singapore (SG), South Africa (ZA), Ireland (IE), Hong Kong (HK), Malaysia (MY), Philippines (PH), Indonesia (ID).

**Do I need an API key or login?**\
No — the actor uses the publicly accessible Xero App Store search index.

**Why isn't this scraping apps.intuit.com directly?**\
The QuickBooks/Intuit platform (`apps.intuit.com`, `quickbooks.intuit.com/app/apps/`) is protected by Akamai Bot Manager and blocks datacenter IPs entirely. The Xero App Store is a freely accessible equivalent marketplace for the same small-business accounting software niche.

**How many apps are available?**\
The Xero App Store has 1,000+ published applications.

**Is the data real-time?**\
Data is fetched live from the Xero App Store on each run.

# Actor input Schema

## `mode` (type: `string`):

Select the scraping mode.

## `query` (type: `string`):

Keyword to search for (mode=search). E.g. 'inventory', 'payroll', 'invoicing'.

## `category` (type: `string`):

Filter by app category (most useful in browse mode). Accepts partial/alias names.

## `region` (type: `string`):

Filter apps by supported country/region.

## `slugs` (type: `array`):

List of app slugs to fetch (e.g. \['dext', 'inflow-inventory']). Used only in getBySlug mode.

## `minRating` (type: `number`):

Only return apps with rating >= this value (0.0–5.0).

## `hasFreeTrial` (type: `boolean`):

If enabled, return only apps that offer a free trial.

## `maxItems` (type: `integer`):

Maximum number of apps to return.

## Actor input object example

```json
{
  "mode": "search",
  "query": "inventory",
  "category": "",
  "region": "global",
  "hasFreeTrial": false,
  "maxItems": 100
}
```

# Actor output Schema

## `apps` (type: `string`):

Dataset containing all scraped app records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "search",
    "query": "inventory",
    "category": "",
    "region": "global",
    "hasFreeTrial": false,
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/quickbooks-app-store-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "search",
    "query": "inventory",
    "category": "",
    "region": "global",
    "hasFreeTrial": False,
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/quickbooks-app-store-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search",
  "query": "inventory",
  "category": "",
  "region": "global",
  "hasFreeTrial": false,
  "maxItems": 100
}' |
apify call crawlerbros/quickbooks-app-store-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/quickbooks-app-store-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "QuickBooks App Store Scraper",
        "description": "Scrape accounting & business integration apps from the Xero App Store - the leading open small-business app marketplace. Search by keyword, browse by category, or fetch apps by slug. Returns name, description, rating, review count, categories, regions, pricing type, and free-trial availability.",
        "version": "1.0",
        "x-build-id": "8Lcp5bAOkPlHyLTTo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~quickbooks-app-store-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-quickbooks-app-store-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~quickbooks-app-store-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-quickbooks-app-store-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~quickbooks-app-store-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-quickbooks-app-store-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "browse",
                            "getBySlug"
                        ],
                        "type": "string",
                        "description": "Select the scraping mode.",
                        "default": "search"
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Keyword to search for (mode=search). E.g. 'inventory', 'payroll', 'invoicing'."
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "",
                            "Accountant tools",
                            "Banking",
                            "Bills and expenses",
                            "Carbon accounting",
                            "Convert data to Xero",
                            "CRM and marketing",
                            "Debtor management",
                            "Development partners",
                            "Documents",
                            "Ecommerce",
                            "Inventory",
                            "Invoicing and jobs",
                            "Loans, financing and credit",
                            "Other",
                            "Payments",
                            "Payroll HR",
                            "Point of sale",
                            "Practice manager",
                            "Reporting and forecasting",
                            "Tax and compliance",
                            "Time tracking",
                            "Workflow builders"
                        ],
                        "type": "string",
                        "description": "Filter by app category (most useful in browse mode). Accepts partial/alias names.",
                        "default": ""
                    },
                    "region": {
                        "title": "Region",
                        "enum": [
                            "global",
                            "AU",
                            "GB",
                            "NZ",
                            "US",
                            "CA",
                            "SG",
                            "ZA",
                            "IE",
                            "HK",
                            "MY",
                            "PH",
                            "ID"
                        ],
                        "type": "string",
                        "description": "Filter apps by supported country/region.",
                        "default": "global"
                    },
                    "slugs": {
                        "title": "Slugs (mode=getBySlug)",
                        "type": "array",
                        "description": "List of app slugs to fetch (e.g. ['dext', 'inflow-inventory']). Used only in getBySlug mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Only return apps with rating >= this value (0.0–5.0)."
                    },
                    "hasFreeTrial": {
                        "title": "Free trial only",
                        "type": "boolean",
                        "description": "If enabled, return only apps that offer a free trial.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of apps to return.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
