Microsoft AppSource Marketplace Scraper avatar

Microsoft AppSource Marketplace Scraper

Pricing

Pay per event

Go to Apify Store
Microsoft AppSource Marketplace Scraper

Microsoft AppSource Marketplace Scraper

Export public Microsoft AppSource offers, publishers, compatibility, categories, pricing and free-trial signals, ratings, links, descriptions, and media.

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

a day ago

Last modified

Share

Export Microsoft AppSource offers as structured data for competitive intelligence, partner discovery, lead generation, and marketplace monitoring.

The Actor works without a Microsoft login. It reads public AppSource search, marketplace/category, and product pages over lightweight HTTP. Each dataset row represents one unique offer.

What this Actor does

Microsoft AppSource is a large B2B catalog of SaaS products, Microsoft 365 add-ins, Power BI visuals, Dynamics solutions, and Azure applications. This Actor turns those public listings into integration-ready records.

Use it to:

  • search AppSource by one or more keywords;
  • crawl public marketplace, category, or filter URLs;
  • extract a specific public product URL;
  • paginate conservatively;
  • deduplicate offers by Microsoft's stable entity ID;
  • filter every route by exact category or publisher;
  • export descriptions, compatibility, pricing signals, ratings, links, and media;
  • schedule recurring catalog snapshots.

Who is it for

Competitive-intelligence teams

Build a repeatable catalog of products competing in a Microsoft ecosystem niche. Compare positioning, compatibility, categories, calls to action, and trial signals over time.

Microsoft partners and scouts

Find vendors serving a specific product family or industry. Create a shortlist for partnership, reseller, integration, or acquisition research.

Vendor lead-generation teams

Collect publisher names and IDs, product descriptions, support links, and public offer metadata. Use the result as the public-data layer of a qualified outreach workflow.

Marketplace analysts

Refresh normalized AppSource records in a warehouse, spreadsheet, or BI dashboard. Diff scheduled datasets to identify new or changed offers.

Why use this Actor

  • HTTP-only: no browser startup or residential proxy is required for the observed public pages.
  • Structured extraction: parses AppSource's embedded application state instead of scraping fragile visual card selectors.
  • Detailed rows: list responses already expose extensive product metadata, avoiding unnecessary extra requests.
  • Multiple entry points: query, marketplace URL, category/filter URL, and product URL.
  • Consistent filters: category and publisher filters apply after normalization to all entry points.
  • Fail-loud behavior: challenge pages and hydration schema changes produce an error instead of a misleading empty dataset.
  • Integration-ready: primary results use the run's default Apify dataset.

Data you can extract

Field groupExample fields
IdentityentityId, title, offerUrl
Publisherpublisher, publisherId
PositioningshortDescription, description, keywords
Microsoft fitbuiltFor, products, productType, catalogOfferType
Taxonomycategories, industries
Commercial signalspricingTypes, pricingModel, startingPrice, hasPrices, hasFreeTrial, cta
Trust signalsbadges, averageRating, numberOfRatings
Product detailsreleaseDate, languages, licenseTermsUrl, supportUrl, privacyPolicyUrl
MediaiconUrl, images, videos
ProvenancesourceUrl, scrapedAt

Fields remain nullable because publishers do not provide every value for every offer.

Quick start

  1. Open the Actor input page.
  2. Enter one or more values in Search queries, or paste AppSource URLs.
  3. Keep Maximum offers small for the first run.
  4. Leave Include detailed metadata enabled for research and lead workflows.
  5. Click Start.
  6. Open the default dataset when the run finishes.
  7. Export JSON, CSV, Excel, XML, RSS, or connect the dataset to another service.

A useful first input is:

{
"searchQueries": ["data analytics"],
"maxItems": 25,
"maxPages": 2,
"includeDetails": true
}

Input reference

searchQueries

Array of keyword searches. Each query is paginated independently. The Actor also verifies that returned records contain the query terms, which prevents irrelevant default recommendations from being saved when AppSource ignores an unusual query.

startUrls

Optional public https://appsource.microsoft.com URLs. Supported paths include:

  • /en-US/marketplace/apps?... search pages;
  • marketplace category and filter URLs;
  • /en-US/product/.../... product pages.

Existing URL query parameters are preserved. Only the page parameter changes during marketplace pagination. Other domains and unrelated AppSource paths fail validation.

market

Locale for generated search and offer URLs. Use the ll-CC form, such as en-US. Default: en-US.

maxItems

Maximum unique offers saved across all input sources. Range: 1–10,000. Default: 100.

maxPages

Maximum marketplace pages fetched for each query or start URL. Range: 1–100. Default: 10. Product URLs always use one page.

includeDetails

When enabled, rows include the full plain-text description, release date, support/privacy links, languages, keywords, screenshots, and videos exposed in AppSource state. Disable it for a smaller payload.

categories

Optional exact category display names, case-insensitive. For example:

["Analytics", "IT & Management Tools"]

An offer is accepted when one of its categories exactly matches one requested value.

publishers

Optional exact publisher display names or publisher IDs, case-insensitive. For example:

["17a-4 LLC", "example-publisher-id"]

Start URL example

{
"startUrls": [
{
"url": "https://appsource.microsoft.com/en-US/marketplace/apps?search=CRM"
}
],
"maxItems": 100,
"maxPages": 3
}

Product detail example

{
"startUrls": [
{
"url": "https://appsource.microsoft.com/en-us/product/web-apps/xplore-io.xplore_data_entry?tab=Overview"
}
],
"maxItems": 1,
"includeDetails": true
}

Output example

A current product-page run produces a record shaped like this:

{
"entityId": "xplore-io.xplore_data_entry",
"title": "xplore_data_entry",
"publisher": "xplore",
"publisherId": "xplore-io",
"shortDescription": "No-code data entry for Snowflake",
"builtFor": "SaaS",
"products": ["SaaS", "Azure"],
"categories": ["Analytics"],
"industries": [],
"productType": 64,
"catalogOfferType": "SaaS",
"pricingTypes": [],
"hasPrices": false,
"hasFreeTrial": false,
"cta": "CONTACTME",
"averageRating": 0,
"numberOfRatings": 0,
"offerUrl": "https://appsource.microsoft.com/en-US/product/web-apps/xplore-io.xplore_data_entry",
"sourceUrl": "https://appsource.microsoft.com/en-us/product/web-apps/xplore-io.xplore_data_entry?tab=Overview",
"images": [
{
"name": "Unavailable",
"url": "https://catalogartifact.azureedge.net/example/screenshot.png"
}
],
"scrapedAt": "2026-07-25T00:00:00.000Z"
}

Descriptions and arrays are shortened in this documentation example. The dataset schema contains the complete field contract.

Pricing

This Actor uses pay-per-event pricing:

  • a $0.005 start event once per run;
  • one item event for each unique accepted dataset row;
  • no item charge for duplicates, rejected filters, empty results, or failed records.

The current item tiers in the Actor package are:

Apify plan tierPrice per resultApprox. per 1,000 results
Free$0.00015811$0.15811
Bronze$0.00013748$0.13748
Silver$0.00010724$0.10724
Gold$0.00008249$0.08249
Platinum$0.000054993$0.054993
Diamond$0.000038495$0.038495

Examples before any Apify plan credits:

  • 25 results on Free: about $0.00895 including the start event;
  • 100 results on Free: about $0.02081 including the start event;
  • 1,000 results on Bronze: about $0.14248 including the start event.

The Console pricing tab is authoritative if Apify displays a newer active price.

Performance and cost tips

  • Set maxItems to the number you actually need.
  • Use a narrow query or an existing filtered marketplace URL.
  • Disable includeDetails when descriptions and media are unnecessary.
  • Combine related queries in one run to pay the start event once.
  • Use exact publisher/category filters to keep datasets focused.
  • The Actor does not download image or video binaries; it only records their public URLs.

Pagination, deduplication, and retries

AppSource currently exposes up to 60 app offers per unfiltered marketplace page. The Actor stops when it reaches maxItems, exhausts maxPages, receives no offers, or finds no new accepted offers on a later page.

Deduplication uses entityId across all queries and URLs in a run.

Requests retry up to two times after the first attempt for transient network errors, HTTP 429, and temporary 5xx responses. Deterministic validation errors, unsupported URLs, HTTP 4xx responses, and parser drift are not retried blindly.

Empty results and failures

A legitimate no-match query or filters that reject every offer succeed with an empty dataset.

The run fails non-zero when:

  • neither a query nor URL is supplied;
  • a URL is malformed, uses another host, or has an unsupported path;
  • the locale format is invalid;
  • numeric limits are outside their documented range;
  • AppSource returns an error or non-HTML response;
  • recognizable embedded data is missing;
  • a requested product is not present in its page state.

This distinction helps scheduled workflows tell “nothing matched” from “the source changed.”

Scheduled competitive monitoring

A typical recurring workflow is:

  1. run daily or weekly with stable queries;
  2. export the dataset to a warehouse or Google Sheets;
  3. key records by entityId;
  4. compare the current snapshot with the previous snapshot;
  5. alert on new offers, changed calls to action, trials, descriptions, or categories.

Apify schedules and webhooks can trigger the run and downstream automation.

Lead-generation workflow

Use public AppSource data responsibly as a qualification signal:

  1. search for a product family or industry;
  2. filter to relevant categories;
  3. group records by publisherId;
  4. review product positioning and public support/privacy links;
  5. enrich companies through a lawful source;
  6. send only relevant, compliant outreach.

The Actor does not extract personal email addresses or private Microsoft account data.

Integrations

The default dataset works with:

  • Google Sheets and Google Drive;
  • Make and Zapier;
  • Slack and email webhooks;
  • Airbyte and data warehouses;
  • Python, JavaScript, and REST clients;
  • Apify schedules, webhooks, and dataset exports.

Use entityId as the stable primary key in downstream systems. Use sourceUrl for provenance and scrapedAt for snapshot timing.

Run through the REST API

Replace YOUR_APIFY_TOKEN with your token:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~microsoft-appsource-marketplace-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQueries": ["CRM"],
"maxItems": 25,
"maxPages": 2,
"includeDetails": true
}'

For long runs, start asynchronously through /runs and read the run's default dataset after completion.

JavaScript API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor(
'automation-lab/microsoft-appsource-marketplace-scraper',
).call({
searchQueries: ['Power BI finance'],
maxItems: 100,
maxPages: 3,
includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map(({ entityId, title, publisher }) => ({
entityId,
title,
publisher,
})));

Python API example

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor(
"automation-lab/microsoft-appsource-marketplace-scraper"
).call(run_input={
"searchQueries": ["Microsoft 365 security"],
"maxItems": 100,
"maxPages": 3,
"includeDetails": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["entityId"], item["title"], item.get("publisher"))

Use with Apify MCP

Add this Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/microsoft-appsource-marketplace-scraper"

Claude Desktop, Cursor, and VS Code setup

Claude Desktop, Cursor, VS Code, and other HTTP MCP clients can use this equivalent configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/microsoft-appsource-marketplace-scraper"
}
}
}

Example prompts:

  • “Search AppSource for Power BI financial planning offers and return the first 50 publishers.”
  • “Extract this AppSource product URL and summarize compatibility, CTA, trial, and pricing signals.”
  • “Find AppSource offers in IT & Management Tools from the listed publishers.”

This Actor reads public marketplace pages available without authentication. You are responsible for your use of the output.

  • Review Microsoft AppSource terms and applicable robots guidance.
  • Collect only data needed for a legitimate purpose.
  • Respect copyright, database rights, privacy, and marketing laws.
  • Do not use output for spam, discrimination, surveillance, or deceptive activity.
  • Verify material business decisions against the live product page.
  • Follow publisher terms when using descriptions, images, and trademarks.

Public availability does not automatically grant every reuse right.

Limitations

  • Microsoft may change its embedded hydration schema or page routes.
  • Category and publisher filters are exact, case-insensitive matches, not fuzzy filters.
  • Keyword verification is lexical; highly semantic AppSource matches may be excluded when they do not contain every query token.
  • Offer URLs are derived from public entity and product-type metadata when AppSource does not expose a direct link.
  • Some offers omit price, trial, rating, release date, language, support, or media fields.
  • The Actor records media URLs but does not download files.
  • Ratings and marketplace metadata can lag publisher changes.
  • Authenticated, private, or customer-specific marketplace data is outside scope.

Troubleshooting

The run says an AppSource URL is unsupported

Use an HTTPS URL on exactly appsource.microsoft.com with a locale and /marketplace/ or /product/ path. Do not paste Microsoft Partner Center, Azure Portal, or redirect URLs.

A query returns no rows

Try a shorter query, remove category/publisher filters, and confirm the phrase on AppSource. The Actor requires all lexical query tokens to appear in normalized product metadata.

I received fewer rows than maxItems

maxItems is a ceiling, not a guarantee. The query may have fewer matches, later pages may repeat IDs, or filters may reject records. Increase maxPages only after confirming more pages exist.

The run fails with “embedded state was not found”

AppSource may have changed its page schema or returned a challenge. Retry once later. If it persists, open an Actor issue with the public input URL and run link; do not paste tokens or private data.

Why is a field null?

AppSource publishers do not provide every field. Use entityId, title, publisher, and offerUrl for core identity, and treat optional commercial/detail fields as nullable.

FAQ

Does it require a Microsoft account?

No. The supported scope uses public AppSource pages.

Does it require a proxy?

No proxy is used by default. Anonymous direct HTTP currently works for the supported pages.

Can it scrape one product?

Yes. Pass its public AppSource /product/ URL in startUrls and set maxItems to 1.

Can it scrape category and filter pages?

Yes. Paste the public marketplace URL after selecting filters in AppSource. The Actor preserves those query parameters while paginating.

Does it scrape reviews?

The primary offer record includes aggregate rating fields exposed in product state. Individual review text is not part of this version.

Can I monitor changes?

Yes. Schedule stable inputs and compare snapshots by entityId.

Will duplicates be charged twice?

No. The Actor deduplicates accepted rows by entityId before charging and saving.

Is this an official Microsoft product?

No. It is an independent Apify Actor that extracts publicly visible AppSource data. Microsoft and AppSource are trademarks of their respective owner.

These Actors target adjacent marketplaces. Choose this Actor when the buyer job centers on Microsoft AppSource's B2B offer catalog.

Support

For reproducible problems, include:

  • a public input example;
  • the run URL;
  • the expected and observed behavior;
  • whether the same AppSource page opens anonymously;
  • the first relevant error message from the log.

Never include your Apify token, Microsoft credentials, private customer data, or complete confidential datasets.