# Azure Marketplace Pricing API & Plan Export (`immense_insulator/azure-marketplace-plan-intelligence`) Actor

Azure Marketplace pricing API for offer export and plan comparison. Extract plans, MACC, PAYG, BYOL, trials, ratings, and timestamps to JSON/CSV.

- **URL**: https://apify.com/immense\_insulator/azure-marketplace-plan-intelligence.md
- **Developed by:** [xinyao a](https://apify.com/immense_insulator) (community)
- **Categories:** Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.50 / 1,000 azure marketplace plan rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Azure Marketplace Pricing API & Plan Export

Compare Azure Marketplace pricing plans and export offers to JSON or CSV. This Actor turns Microsoft's public Marketplace catalog into procurement-ready plan rows for **plan comparison, vendor shortlisting, MACC analysis, and competitor research**—without a Microsoft login, API key, browser, or proxy.

> Looking for an Azure Marketplace pricing API? This Actor exports plan-level pricing **types and commercial metadata** (PAYG, free trial, BYOL, reserved instance, MACC, and stop-sell status). It does not claim to provide negotiated or private numeric prices; confirm final commercial terms with Microsoft or the publisher.

### Real output: compare plans before procurement

A verified cloud run returned **10 MACC-eligible SaaS plans across 7 offers; 9 of 10 were PAYG**. Representative rows:

| Publisher | Offer / plan | Pricing type | MACC | Procurement or competitor-analysis use |
|---|---|---|---:|---|
| Imperva | Data Security — upfront with overage | PAYG | Yes | Compare billing variants within one vendor offer |
| Imperva | Data Security — annual billing | PAYG | Yes | Identify alternate commercial plans and SKU IDs |
| Degreed | Enterprise LXP | PAYG | Yes | Add an eligible vendor/plan to a sourcing shortlist |
| Stackblitz | Enterprise | PAYG | Yes | Benchmark competing AI development offers |
| Fini AI | Growth / Enterprise | PAYG / Free | Yes | Compare plan mix and monitor catalog changes |

- [View the real output sample](https://tools.axinyao.com/azure-marketplace-macc-plan-data)
- [Download CSV](https://tools.axinyao.com/static/azure-marketplace/azure-macc-security-sample.csv)
- [Download JSON](https://tools.axinyao.com/static/azure-marketplace/azure-macc-security-sample.json)

### What the offer export includes

Generic Azure Marketplace scrapers usually emit one listing row. This Azure Marketplace plan comparison API defaults to **one row per commercial plan** and exposes procurement signals otherwise buried in nested catalog JSON:

- Microsoft Azure Consumption Commitment benefit (`isMacc`)
- plan pricing types (`Payg`, `FreeTrial`, `Byol`, `Ri`, etc.)
- free/trial/PAYG/BYOL/stop-sell state
- plan/SKU IDs and purchase-duration discounts
- publisher, categories, rating, rating count, and source modification time
- keyset pagination and reproducible source URLs

Use the export to compare a publisher's plans, shortlist MACC-eligible products, inspect PAYG/BYOL/trial positioning, track offer changes, or benchmark competitors' Marketplace packaging.

### Downloadable Azure Marketplace offer export

A current 10-row MACC-eligible SaaS sample is available with downloadable CSV and JSON:

- [View the sample and procurement fields](https://tools.axinyao.com/azure-marketplace-macc-plan-data)
- [Download sample CSV](https://tools.axinyao.com/static/azure-marketplace/azure-macc-security-sample.csv)
- [Download sample JSON](https://tools.axinyao.com/static/azure-marketplace/azure-macc-security-sample.json)

The sample was generated from a successful Apify cloud run and includes 10 plans across 7 offers. Nine of the rows are tagged PAYG.

### Input example

```json
{
  "keyword": "security",
  "offerTypes": ["SaaS"],
  "pricingTypes": ["Payg", "FreeTrial"],
  "maccOnly": true,
  "freeTrialOnly": false,
  "outputMode": "plans",
  "maxItems": 500
}
````

| Field | Default | Meaning |
|---|---:|---|
| `keyword` | empty | Case-aware variants are searched in offer name, publisher, summary, and description |
| `publisher` | empty | Publisher-name substring |
| `offerTypes` | `[]` | `SaaS`, `VirtualMachine`, `AzureApplication`, `Container`, etc. |
| `pricingTypes` | `[]` | Plan pricing filter; matching is case-insensitive |
| `maccOnly` | `false` | Only offers marked MACC eligible |
| `freeTrialOnly` | `false` | Only offers with free-trial plans |
| `byolOnly` | `false` | Only BYOL offers |
| `includeStopped` | `false` | Include stop-sell offers/plans |
| `outputMode` | `plans` | One row per `plan` or one row per `offer` |
| `maxItems` | `100` | Hard output limit, maximum 20,000 |

### Output example

```json
{
  "recordType": "plan",
  "offerId": "DZH318XZLLJJ",
  "offerName": "...",
  "publisherName": "...",
  "offerType": "SaaS",
  "planId": "...",
  "planName": "...",
  "pricingTypes": ["Payg"],
  "isMacc": true,
  "hasFreeTrial": false,
  "isPayg": true,
  "isByol": false,
  "rating": 4.5,
  "ratingCount": 10,
  "lastModifiedAt": "2026-07-01T00:00:00Z",
  "marketplaceUrl": "https://azuremarketplace.microsoft.com/en-us/marketplace/apps/...?...",
  "sourceUrl": "https://catalogapi.azure.com/offers"
}
```

Exact values come from the live catalog; the example only illustrates the schema.

### Data source and responsible use

- Source: `GET https://catalogapi.azure.com/offers?api-version=2018-08-01-beta`
- Public, credential-free JSON catalog data only.
- No account bypass, personal profiles, emails, or other sensitive personal data.
- The endpoint uses a beta API version and is not guaranteed by this Actor. Microsoft can change fields or availability. The client has bounded retries and validates every response.
- Users remain responsible for complying with Microsoft terms and their own use case. Do not treat marketplace flags as contractual advice; confirm purchasing eligibility in Microsoft Marketplace.

### Local development

```bash
python -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt -r requirements-dev.txt
pytest -q -m "not integration"
pytest -q -m integration
```

Run locally with Apify storage:

```bash
export APIFY_INPUT='{"maccOnly":true,"offerTypes":["SaaS"],"maxItems":5}'
python -m src.main
```

Or build the production image:

```bash
docker build -t azure-marketplace-plan-intelligence .
```

### Store pricing

The current Store price is **$2.50 per 1,000 output rows** (`$0.0025/result`). Apify charges the default dataset-item event when a row is written. Re-evaluate after 30–60 days of organic usage.

# Actor input Schema

## `keyword` (type: `string`):

Case-insensitive search across offer name, publisher, summary, and description.

## `publisher` (type: `string`):

Return offers whose publisher name contains this text.

## `offerTypes` (type: `array`):

Optional offer type filter. Common values: SaaS, VirtualMachine, AzureApplication, Container.

## `pricingTypes` (type: `array`):

Optional plan-level filter, for example Payg, Free, FreeTrial, Byol, Ri.

## `maccOnly` (type: `boolean`):

Only offers marked as eligible for Azure consumption commitment benefit.

## `freeTrialOnly` (type: `boolean`):

Only include offers or plans that advertise a free trial.

## `byolOnly` (type: `boolean`):

Only include bring-your-own-license offers or plans.

## `includeStopped` (type: `boolean`):

Include catalog entries marked as stopped for new sales.

## `outputMode` (type: `string`):

plans emits one row per commercial plan; offers emits one row per marketplace offer.

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

Hard output limit (1–20,000).

## Actor input object example

```json
{
  "keyword": "",
  "publisher": "",
  "offerTypes": [],
  "pricingTypes": [],
  "maccOnly": false,
  "freeTrialOnly": false,
  "byolOnly": false,
  "includeStopped": false,
  "outputMode": "plans",
  "maxItems": 100
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("immense_insulator/azure-marketplace-plan-intelligence").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("immense_insulator/azure-marketplace-plan-intelligence").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 '{}' |
apify call immense_insulator/azure-marketplace-plan-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=immense_insulator/azure-marketplace-plan-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Azure Marketplace Pricing API & Plan Export",
        "description": "Azure Marketplace pricing API for offer export and plan comparison. Extract plans, MACC, PAYG, BYOL, trials, ratings, and timestamps to JSON/CSV.",
        "version": "0.1",
        "x-build-id": "tbbcey7wdf3WeZ6Zq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/immense_insulator~azure-marketplace-plan-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-immense_insulator-azure-marketplace-plan-intelligence",
                "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/immense_insulator~azure-marketplace-plan-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-immense_insulator-azure-marketplace-plan-intelligence",
                "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/immense_insulator~azure-marketplace-plan-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-immense_insulator-azure-marketplace-plan-intelligence",
                "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",
                "properties": {
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Case-insensitive search across offer name, publisher, summary, and description.",
                        "default": ""
                    },
                    "publisher": {
                        "title": "Publisher contains",
                        "type": "string",
                        "description": "Return offers whose publisher name contains this text.",
                        "default": ""
                    },
                    "offerTypes": {
                        "title": "Offer types",
                        "type": "array",
                        "description": "Optional offer type filter. Common values: SaaS, VirtualMachine, AzureApplication, Container.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "pricingTypes": {
                        "title": "Plan pricing types",
                        "type": "array",
                        "description": "Optional plan-level filter, for example Payg, Free, FreeTrial, Byol, Ri.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maccOnly": {
                        "title": "MACC eligible only",
                        "type": "boolean",
                        "description": "Only offers marked as eligible for Azure consumption commitment benefit.",
                        "default": false
                    },
                    "freeTrialOnly": {
                        "title": "Free trial only",
                        "type": "boolean",
                        "description": "Only include offers or plans that advertise a free trial.",
                        "default": false
                    },
                    "byolOnly": {
                        "title": "BYOL only",
                        "type": "boolean",
                        "description": "Only include bring-your-own-license offers or plans.",
                        "default": false
                    },
                    "includeStopped": {
                        "title": "Include stop-sell offers/plans",
                        "type": "boolean",
                        "description": "Include catalog entries marked as stopped for new sales.",
                        "default": false
                    },
                    "outputMode": {
                        "title": "Output mode",
                        "enum": [
                            "plans",
                            "offers"
                        ],
                        "type": "string",
                        "description": "plans emits one row per commercial plan; offers emits one row per marketplace offer.",
                        "default": "plans"
                    },
                    "maxItems": {
                        "title": "Maximum output rows",
                        "minimum": 1,
                        "maximum": 20000,
                        "type": "integer",
                        "description": "Hard output limit (1–20,000).",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
