# US Cannabis License Leads Scraper (Official State Data) (`scrapesage/us-cannabis-license-scraper`) Actor

Scrape US cannabis license leads from official state regulators (CA, NY, CT, WA): license type & status, owner, email, phone, website, social-equity designation, license dates, geo & lead score. Full supply chain + monitor mode.

- **URL**: https://apify.com/scrapesage/us-cannabis-license-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 license records

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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## US Cannabis License Leads Scraper (Official State Data)

Build a **clean, ready-to-contact lead list of US cannabis businesses** — cultivators, manufacturers/processors, distributors, testing laboratories, retailers/dispensaries, delivery (non‑storefront), microbusinesses and event organizers — straight from **official state cannabis regulator licensing registries**. Every record carries the firmographics that matter for B2B selling: **business name, DBA, owner, email, phone, website, license type & status, market designation, social‑equity designation, license dates, full address & geo**, plus a 0–100 lead score.

No login, no cookies, no browser, no proxy — fast JSON extraction from government open data and official regulator APIs.

### Why this cannabis license scraper?

Consumer dispensary directories (Weedmaps, Leafly, Dutchie) show you retail menus, prices and store reviews — but **not** the regulatory firmographics that the *whole* cannabis supply chain runs on. This actor pulls the **official license record** for every license type — not just retail — and ships the richest cannabis-license lead dataset in the category.

| Data | Dispensary menu scrapers | Single‑state thin scrapers | This actor (official, multi‑state) |
|---|---|---|---|
| Whole supply chain (grow / mfg / distro / lab / retail) | ❌ retail only | partial | ✅ |
| Business legal name + DBA | ✅ | ✅ | ✅ |
| **Owner / contact name** | ❌ | partial | ✅ |
| **Email** | ❌ | ❌ | ✅ (CA) |
| **Phone** | partial | partial | ✅ (CA, WA) |
| Website | ✅ | partial | ✅ (CT) |
| License number, type & **status** | ❌ | ✅ | ✅ |
| Market designation (Adult‑Use / Medicinal) | ❌ | partial | ✅ |
| **Social‑equity / diverse‑owned designation** | ❌ | ❌ | ✅ (NY) |
| Issue / effective / expiration dates | ❌ | partial | ✅ |
| New‑license & license‑expiring (renewal) signals | ❌ | ❌ | ✅ |
| Lead score (0–100) | ❌ | ❌ | ✅ |
| Only‑new **monitor mode** | ❌ | ❌ | ✅ |
| No start fee | — | ❌ | ✅ |

### Coverage

Official state cannabis regulator registries (keyless), normalized into one schema:

| State | Source | What's covered |
|---|---|---|
| **CA** | Dept. of Cannabis Control (DCC) license search | ~20k licenses across the whole supply chain — **business email, phone, owner name**, structure, type/status, designation, license dates, parcel & geo |
| **NY** | Office of Cannabis Management (OCM) Current Licenses | Cultivators, processors, distributors, microbusinesses, retail dispensaries — **contact name, social‑equity designation, cultivation/processing/retail activities, operational status, hours** |
| **CT** | Dept. of Consumer Protection (DCP) licensed retail | Adult‑use & hybrid retail locations — **website**, DBA, geo |
| **WA** | Liquor & Cannabis Board (LCB) cannabis renewals | Recently‑renewed WA cannabis licensees — **phone**, trade name, geo |

> More states are added over time. Leave **states** empty to pull every available registry.

### Use cases

- **Sell to cannabis operators** — pitch seed‑to‑sale & METRC compliance, POS (Dutchie/Flowhub/Cova), payments & banking, packaging, extraction & lab equipment, security, insurance, marketing and HR/payroll. Filter by `licenseCategory`, `state` and `designations` to hit your ICP.
- **Testing labs, distributors & manufacturers** — find every licensed cultivator/processor/retailer in a market to build a wholesale or service pipeline.
- **Cannabis banking, lending & insurance** — target active license holders by state and stage; cannabis is hard to reach, so verified license lists are gold.
- **Real estate & site selection** — map license premises by county/ZIP and geo for leasing, acquisition and zoning analysis.
- **M\&A, market intelligence & investors** — track new licenses, ownership, social‑equity entrants and renewals across states.
- **Recurring fresh‑leads feed** — schedule with **monitor mode** to get only newly‑licensed or changed businesses each run.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **US Cannabis License Leads Scraper**, pick `states` and (optionally) `licenseCategories`, then click **Start**.
3. Watch leads stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML or RSS — or pull results via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "states": ["CA", "NY"],
    "licenseCategories": ["Retail", "Cultivation", "Manufacturing"],
    "activeOnly": true,
    "hasPhone": true,
    "sortBy": "leadScore",
    "maxResults": 1000,
    "monitorMode": false
}
```

- **states** — two‑letter codes (`CA`, `NY`, `CT`, `WA`). Empty = all.
- **licenseCategories** — supply‑chain stage: `Retail`, `Retail - Non-Storefront / Delivery`, `Cultivation`, `Manufacturing`, `Distribution`, `Testing Laboratory`, `Microbusiness`, `Event Organizer`, `Vertically Integrated`, `Other`.
- **licenseTypes** — native type contains‑match (`Retailer`, `Cultivation`, `Manufacturer`, `Distributor`, `Processor`, …).
- **designations** — `Adult-Use`, `Medicinal`.
- **activeOnly** *(default true)* — only active licenses. **statuses** — override with exact statuses (`Active`, `Expired`, `Surrendered`, `Revoked`, `In-Process`, …).
- **socialEquityOnly** — only social‑equity / minority‑/women‑/veteran‑owned / disproportionately‑impacted licenses (NY).
- **hasEmail / hasPhone / hasWebsite / hasNamedContact** — keep only the most contactable leads.
- **cities / counties / zipCodes / nameQuery** — location & operator filters.
- **issuedAfter / newLicenseWithinDays / expiringWithinDays** — new‑license and renewal‑window signals.
- **sortBy** — `leadScore`, `recency`, `expiringSoon`, `name`.
- **maxResults / maxResultsPerState** — output caps.
- **includeRawFields** *(default true)* — attach the full original registry row under `sourceFields`.
- **monitorMode / monitorKey** — only output NEW or CHANGED licenses since the last run with the same key.

### Output

One normalized lead record per cannabis license:

```json
{
    "recordId": "CA-C10-0000007-LIC",
    "state": "CA",
    "businessLegalName": "Blue Mountain Collective, Inc.",
    "dba": "BLUE MOUNTAIN COLLECTIVE, INC.",
    "ownerName": "Conrad Bonet, Thomas Calmese",
    "licenseNumber": "C10-0000007-LIC",
    "licenseType": "Commercial - Retailer",
    "licenseCategory": "Retail",
    "licenseDesignation": "Adult-Use and Medicinal",
    "licenseStatus": "Active",
    "isActive": true,
    "licenseTerm": "Annual",
    "businessStructure": "Corporation",
    "socialEquityFlags": [],
    "isSocialEquity": false,
    "activities": [],
    "issueDate": "2018-11-20",
    "expirationDate": "2026-11-20",
    "expiresInDays": 152,
    "isExpiringSoon": false,
    "email": "owner@example.com",
    "phone": "(209) 754-3289",
    "website": null,
    "street": "692 Marshall Ave",
    "city": "San Andreas",
    "county": "Calaveras",
    "state": "CA",
    "zip": "95249",
    "latitude": 38.190254,
    "longitude": -120.671648,
    "licensingAuthority": "Bureau of Cannabis Control (BCC)",
    "sourceName": "California Department of Cannabis Control (DCC) License Search",
    "sourceUrl": "https://search.cannabis.ca.gov/",
    "leadSignals": ["stage:Retail", "activeLicense", "hasEmail", "hasPhone", "hasOwnerName", "hasGeo", "adultUseAndMedical"],
    "leadScore": 77,
    "scrapedAt": "2026-06-21T12:00:00.000Z",
    "sourceFields": { "...": "full original registry row" }
}
```

Fields are `null` only when the source registry genuinely doesn't publish them — never because the scraper skipped them.

### Monitor mode & scheduling

Turn this actor into a **fresh-leads pipeline**:

- Turn on **monitorMode** and give each saved search its own **monitorKey**.
- The actor remembers every license it has emitted (in a named key-value store) and, on the next run, outputs **only new or changed** licenses — newly‑licensed businesses, status changes, ownership/contact changes, renewals.
- Pair it with [Apify Schedules](https://docs.apify.com/platform/schedules) to run daily/weekly. Monitor mode and the scheduler are complementary: the **schedule** decides *when* to run, **monitor mode** decides *what's new* — they never conflict.

### Automate & schedule

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run hourly/daily/weekly to track newly‑licensed cannabis businesses in a state or market.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger CRM import, Slack alert or an email sequence the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/us-cannabis-license-scraper').call({
    states: ['CA', 'NY'],
    licenseCategories: ['Retail', 'Cultivation', 'Manufacturing'],
    activeOnly: true,
    hasPhone: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} cannabis license leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new license leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get pinged when a monitored search finds new licenses.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "list active cannabis manufacturers in California with a phone number" and let it run this scraper.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **cannabis & US‑B2B go‑to‑market stack**:

- **[Weedmaps Scraper](https://apify.com/scrapesage/weedmaps-scraper)** — the consumer side: dispensary & delivery listings, menus, prices, brands, hours & social. Pair it with this actor's official license data.
- **[US Business Formation Scraper](https://apify.com/scrapesage/us-business-formation-scraper)** — newly registered companies from Secretary of State filings (catch operators as they incorporate).
- **[US UCC Filings Scraper](https://apify.com/scrapesage/us-ucc-filings-scraper)** — secured‑loan & equipment‑financing intent (who just financed grow/lab/retail equipment).
- **[US Property Records Scraper](https://apify.com/scrapesage/us-property-records-scraper)** — parcel records & owner leads for cannabis real estate and site selection.
- **[US Banks & Credit Unions Scraper](https://apify.com/scrapesage/us-banks-credit-unions-scraper)** — FDIC banks + NCUA credit unions (cannabis‑banking outreach).
- **[SBA Loan Leads Scraper](https://apify.com/scrapesage/sba-loan-leads-scraper)** — financed small businesses (general SMB financing intent).
- **[Texas Business Leads Scraper](https://apify.com/scrapesage/texas-business-leads-scraper)** — state‑scale business prospecting by NAICS industry.

### Tips

- **Target your ICP**: combine `licenseCategories` + `states` + `hasPhone`/`hasEmail` — e.g. active California manufacturers with an email are prime packaging/equipment buyers.
- **Catch new entrants**: set `newLicenseWithinDays: 90` (or `issuedAfter`) to reach businesses right after they're licensed.
- **Renewal timing**: sort by `expiringSoon` or set `expiringWithinDays` to reach operators in their renewal/decision window.
- **Social‑equity outreach**: set `socialEquityOnly: true` for grant‑backed, priority‑licensed operators (NY).
- **Fresh leads only**: turn on `monitorMode` + a `monitorKey` and schedule daily.
- **Cost control**: filter by `states` and `licenseCategories` to scan only the registries you need.

### FAQ

**Where does the data come from?** Official US state cannabis regulator licensing registries — California DCC, New York OCM, Connecticut DCP and Washington LCB — published as government open data / public license search. Each record links back to its source under `sourceUrl`.

**Is this the same as Weedmaps / Leafly?** No. Those are consumer dispensary directories (retail menus). This actor is the **regulatory record** across the *whole* supply chain — license number, type, status, owner, market designation, social‑equity designation and dates. It's the perfect complement to the [Weedmaps Scraper](https://apify.com/scrapesage/weedmaps-scraper).

**Does it include emails and phones?** California publishes a business email (~99%) and phone (100%); Washington publishes a phone; Connecticut publishes a website. New York publishes a contact name (no email/phone). Fields are populated wherever the source provides them and left `null` otherwise — never fabricated.

**Can I get only newly‑licensed businesses?** Yes — use `monitorMode` (only new/changed since last run) and/or `newLicenseWithinDays` / `issuedAfter`.

**Can I export to Google Sheets, CSV or Excel?** Yes — one click in the dataset view, or automatically every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**Is scraping this data legal?** It collects publicly available government open data only. You are responsible for using the data in compliance with applicable laws (e.g. CCPA/GDPR for any personal data) and registry terms. Cannabis remains federally illegal in the US; use this data for lawful B2B purposes in jurisdictions where it applies.

**A field is null — why?** The source registry doesn't publish that field for that license (e.g. NY doesn't publish email/phone; CT publishes website but not owner). Fields are `null` only when the data genuinely doesn't exist.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests — including new states — are welcome; this actor is actively maintained.

# Actor input Schema

## `states` (type: `array`):

Two-letter state codes to include. Available official-registry states: <code>CA</code> (DCC), <code>NY</code> (OCM), <code>CT</code> (DCP), <code>WA</code> (LCB). Leave empty for all.

## `licenseCategories` (type: `array`):

Filter by normalized supply-chain stage: <code>Retail</code>, <code>Retail - Non-Storefront / Delivery</code>, <code>Cultivation</code>, <code>Manufacturing</code>, <code>Distribution</code>, <code>Testing Laboratory</code>, <code>Microbusiness</code>, <code>Event Organizer</code>, <code>Vertically Integrated</code>, <code>Other</code>. Leave empty for all.

## `licenseTypes` (type: `array`):

Optional native license-type filter (case-insensitive contains), e.g. <code>Retailer</code>, <code>Cultivation</code>, <code>Manufacturer</code>, <code>Distributor</code>, <code>Microbusiness</code>, <code>Processor</code>.

## `designations` (type: `array`):

Filter by market designation where the source provides it: <code>Adult-Use</code>, <code>Medicinal</code>. Leave empty for all.

## `activeOnly` (type: `boolean`):

Only include licenses with an active status (recommended for lead generation). Turn off to also see expired/surrendered/revoked/in-process licenses.

## `statuses` (type: `array`):

Optional exact status filter (case-insensitive contains), e.g. <code>Active</code>, <code>Expired</code>, <code>Surrendered</code>, <code>Revoked</code>, <code>Suspended</code>, <code>In-Process</code>. Overrides "Active licenses only".

## `socialEquityOnly` (type: `boolean`):

Only include licenses flagged as social-equity, minority-owned, women-owned, veteran-owned, distressed-farmer or disproportionately-impacted (where the source provides it, e.g. NY).

## `hasEmail` (type: `boolean`):

Only include licenses that have a business email (mainly CA).

## `hasPhone` (type: `boolean`):

Only include licenses that have a phone number (CA, WA).

## `hasWebsite` (type: `boolean`):

Only include licenses that have a website (CT).

## `hasNamedContact` (type: `boolean`):

Only include licenses with an owner or contact person name (CA, NY, WA).

## `cities` (type: `array`):

Only include licenses whose city contains one of these (case-insensitive).

## `counties` (type: `array`):

Only include licenses whose county contains one of these (case-insensitive).

## `zipCodes` (type: `array`):

Only include licenses whose ZIP starts with one of these prefixes (e.g. <code>900</code>, <code>112</code>).

## `nameQuery` (type: `string`):

Only include licenses whose business name, DBA or owner contains this text (case-insensitive). Great for tracking a specific operator/chain.

## `issuedAfter` (type: `string`):

Only include licenses issued/effective on or after this date (YYYY-MM-DD). Surfaces newly-licensed cannabis businesses.

## `newLicenseWithinDays` (type: `integer`):

Only include licenses issued within this many days — a fresh-business / first-mover signal.

## `expiringWithinDays` (type: `integer`):

Only include licenses expiring within this many days — a renewal / decision-window signal (where the source provides expiration dates: CA, NY).

## `sortBy` (type: `string`):

Order of the output records.

## `maxResults` (type: `integer`):

Maximum number of cannabis license lead records to output.

## `maxResultsPerState` (type: `integer`):

Optional cap on records per state (useful to balance a multi-state pull).

## `includeRawFields` (type: `boolean`):

Attach the full original registry row to each record under <code>sourceFields</code> (richest possible dataset).

## `monitorMode` (type: `boolean`):

Only output licenses that are NEW or CHANGED since the last run with the same Monitor key. Pairs perfectly with Apify Schedules to build a fresh-leads feed.

## `monitorKey` (type: `string`):

Names the saved monitor state. Use one key per saved search so different schedules don't overwrite each other.

## `deduplicateResults` (type: `boolean`):

Drop duplicate licenses within a run (recommended).

## `socrataAppToken` (type: `string`):

Optional Socrata app token to raise rate limits on the NY/CT/WA registries. Not required — the registries are keyless.

## `proxyConfiguration` (type: `object`):

Proxy settings. Not needed — these government registries and the CA DCC API are reachable directly. Leave proxy off for the cheapest, fastest runs.

## Actor input object example

```json
{
  "states": [
    "CA"
  ],
  "activeOnly": true,
  "socialEquityOnly": false,
  "hasEmail": false,
  "hasPhone": false,
  "hasWebsite": false,
  "hasNamedContact": false,
  "sortBy": "leadScore",
  "maxResults": 1000,
  "includeRawFields": true,
  "monitorMode": false,
  "monitorKey": "default",
  "deduplicateResults": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped cannabis license lead records as JSON items in the default dataset.

# 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 = {
    "states": [
        "CA"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/us-cannabis-license-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 = { "states": ["CA"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/us-cannabis-license-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 '{
  "states": [
    "CA"
  ]
}' |
apify call scrapesage/us-cannabis-license-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/us-cannabis-license-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/xaUbHQsizW5UT0SMo/builds/cBJ0xnW7JxMot2pJv/openapi.json
