# Mindcase — Full API Reference

> Every Mindcase API's complete reference, inlined. For the API
> workflow, auth, endpoints, and the agent catalog, see https://mindcase.co/skills.md.

# Airbnb Listings API

Get Airbnb listing records — price, availability, ratings, host info, amenities, photos — by listing URL or by location search

**Pricing:** $0.002 per listing

**Endpoint:** `POST /v1/data/airbnb/listings/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | array | No | Airbnb listing URLs (https://www.airbnb.com/rooms/...) to fetch details for. |
| `location` | string | No | Place to search (e.g. "Paris, France" or "Lisbon"). Returns listings in that area. |
| `priceMin` | integer | No | Minimum nightly price filter (location search only). |
| `priceMax` | integer | No | Maximum nightly price filter (location search only). |
| `minBedrooms` | integer | No | Minimum number of bedrooms (location search only). |
| `minBeds` | integer | No | Minimum number of beds (location search only). |
| `minBathrooms` | integer | No | Minimum number of bathrooms (location search only). |
| `checkIn` | date | No | Check-in date for availability and price. |
| `checkOut` | date | No | Check-out date for availability and price. |
| `adults` | integer | No | Number of adults in the party. |
| `children` | integer | No | Number of children (ages 2-12). |
| `infants` | integer | No | Number of infants (under 2). |
| `pets` | integer | No | Number of pets. |
| `locale` | string | No | Language and region for the listing data. |
| `currency` | string | No | Currency for prices. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/airbnb/listings/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/airbnb/listings/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `listingUrl` | Listing URL | url |
| `title` | Title | text |
| `propertyType` | Property Type | text |
| `roomType` | Room Type | text |
| `capacity` | Capacity | number |
| `summaryDetails` | Summary Details | array |
| `description` | Description | text |
| `location` | Location | text |
| `locationSubtitle` | Location Subtitle | text |
| `locationPath` | Location Path | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |
| `neighborhoodNotes` | Neighborhood Notes | object_array |
| `ratings` | Ratings | object |
| `highlights` | Highlights | object_array |
| `amenities` | Amenities | array |
| `houseRules` | House Rules | array |
| `cancellationPolicy` | Cancellation Policy | text |
| `available` | Available | boolean |
| `totalPrice` | Total Price | text |
| `pricePerNight` | Price Per Night | text |
| `baseSubtotal` | Base Subtotal | text |
| `priceQualifier` | Price Qualifier | text |
| `host` | Host | object |
| `coHosts` | Co-Hosts | object_array |
| `images` | Images | object_array |
| `thumbnail` | Thumbnail | url |


---

# Airbnb Reviews API

Extract Airbnb reviews — text, author, rating, date — from provided URLs, specifying a locale

**Pricing:** $0.002 per review

**Endpoint:** `POST /v1/data/airbnb/reviews/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | Yes | Airbnb room URL to extract reviews from. |
| `locale` | string | No | Localized reviews will be extracted in this locale (language and region). |
| `maxResults` | integer | No | Number of reviews to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/airbnb/reviews/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"urls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/airbnb/reviews/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "urls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `listingUrl` | Listing URL | url |
| `reviewId` | Review ID | text |
| `reviewText` | Review Text | text |
| `translatedText` | Translated Text | text |
| `originalLanguage` | Original Language | text |
| `rating` | Rating | rating |
| `postedDate` | Posted Date | text |
| `highlight` | Highlight | text |
| `highlightType` | Highlight Type | text |
| `hostResponse` | Host Response | text |
| `hostId` | Host ID | text |
| `hostName` | Host Name | text |
| `hostProfileUrl` | Host Profile URL | url |
| `reviewerUserId` | Reviewer User ID | text |
| `reviewerName` | Reviewer Name | text |
| `reviewerProfile` | Reviewer Profile | url |
| `reviewerAvatar` | Reviewer Avatar | url |
| `reviewerLocation` | Reviewer Location | text |
| `reviewerTenure` | Reviewer Tenure | text |


---

# Amazon Products API

Extract complete Amazon product data — by product/category/search URL from any marketplace, or by keyword search. Full detail page for every product either way.

**Pricing:** $0.0015 per product

**Endpoint:** `POST /v1/data/amazon/products/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | array | No | Amazon product URLs or bare ASINs — any marketplace (amazon.com, .in, .de, …). One per line. Category/listing pages are not supported; use a keyword search instead. |
| `keywords` | string | No | Keyword or phrase to search Amazon for (e.g. 'mechanical keyboard'). Returns the full product detail for each result, with its search rank (1 = top result). |
| `marketplace` | string | No | Which Amazon site to search. Applies to keyword search only — URLs always use their own marketplace. |
| `maxResults` | integer | No | Number of products to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/amazon/products/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/amazon/products/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `asin` | ASIN | text |
| `title` | Title | text |
| `brand` | Brand | text |
| `productUrl` | Product URL | url |
| `marketplace` | Marketplace | text |
| `price` | Price | number |
| `currency` | Currency | text |
| `listPrice` | List Price | number |
| `discount` | Discount | text |
| `onDeal` | On Deal | boolean |
| `prime` | Prime | boolean |
| `availability` | Availability | text |
| `rating` | Rating | rating |
| `ratingsCount` | Ratings Count | number |
| `boughtPastMonth` | Bought Past Month | text |
| `boughtPastMonthMin` | Bought Past Month (Min) | number |
| `bestSellersRank` | Best Sellers Rank | number |
| `bsrCategory` | BSR Category | text |
| `searchRank` | Search Rank | number |
| `soldBy` | Sold By | text |
| `fulfilledBy` | Fulfilled By | text |
| `sellerId` | Seller ID | text |
| `usedOffer` | Used Offer | object |
| `features` | Features | array |
| `description` | Description | text |
| `categoryPath` | Category Path | text |
| `browseNodeId` | Browse Node ID | text |
| `productDetails` | Product Details | object_array |
| `keySpecs` | Key Specs | object_array |
| `bookEditions` | Book Editions | object_array |
| `variants` | Variants | array |
| `mainImage` | Main Image | url |
| `images` | Images | array |
| `videos` | Videos | array |
| `reviewSummary` | Review Summary | text |
| `reviewTopics` | Review Topics | object_array |


---

# Amazon Reviews API

Extract Amazon product reviews—ratings, text, verification, helpful votes, and any attached photos/videos—from product URLs or ASINs on any marketplace

**Pricing:** $0.0005 per review

**Endpoint:** `POST /v1/data/amazon/reviews/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | Yes | An Amazon product URL or bare ASIN from any marketplace. A full URL uses its own marketplace; a bare ASIN uses the Marketplace setting. |
| `marketplace` | string | No | Which Amazon site to pull reviews from. Applies to bare ASINs only — full URLs always use their own marketplace. |
| `maxResults` | integer | No | Number of reviews to return in total. Amazon caps at 100 per product; use 0 for the maximum (100). |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/amazon/reviews/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"urls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/amazon/reviews/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "urls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `reviewTitle` | Review Title | text |
| `reviewText` | Review Text | text |
| `rating` | Rating | number |
| `posted` | Posted | text |
| `reviewer` | Reviewer | text |
| `reviewerUrl` | Reviewer URL | text |
| `verifiedPurchase` | Verified Purchase | boolean |
| `amazonVine` | Amazon Vine | boolean |
| `helpfulVotes` | Helpful Votes | number |
| `language` | Language | text |
| `variant` | Variant | array |
| `variantAsin` | Variant ASIN | text |
| `images` | Images | array |
| `videos` | Videos | array |
| `mediaType` | Media Type | text |
| `reviewUrl` | Review URL | text |
| `reviewId` | Review ID | text |
| `asin` | ASIN | text |
| `country` | Country | text |
| `productTitle` | Product Title | text |
| `productRating` | Product Rating | number |
| `productRatingsTotal` | Product Ratings (Total) | number |
| `productReviewsTotal` | Product Reviews (Total) | number |
| `fiveStar` | Five Star % | number |
| `fourStar` | Four Star % | number |
| `threeStar` | Three Star % | number |
| `twoStar` | Two Star % | number |
| `oneStar` | One Star % | number |
| `productCategory` | Product Category | text |


---

# Blinkit Category API

Extract Blinkit category page listings — products, prices, stock, ratings — from category URLs

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/blinkit/category/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `category` | string | Yes | Top-level category (e.g. Drinks & Juices). |
| `sub_category` | string | Yes | Sub-category within it (e.g. Soft Drinks). |
| `store_id` | string | No | Dark store — pick a city and pincode first. |
| `lat` | number | No | Or target by coordinates — latitude (use with longitude). |
| `lon` | number | No | Or target by coordinates — longitude (use with latitude). |
| `city` | string | No | City — filters the pincode and store lists. |
| `pincode` | string | No | Pincode — pick a city first; filters the store list. |
| `maxResults` | integer | No | How many products to return for the category. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/blinkit/category/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"category":"...","sub_category":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/blinkit/category/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "category": "...",
    "sub_category": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productName` | Product Name | text |
| `brand` | Brand | text |
| `variantId` | Variant ID | text |
| `productId` | Product ID | text |
| `price` | Price | currency |
| `mrp` | MRP | currency |
| `discount` | Discount % | percentage |
| `packSize` | Pack Size | text |
| `inStock` | In Stock | boolean |
| `stockCount` | Stock Count | number |
| `rating` | Rating | rating |
| `ratingCount` | Rating Count | number |
| `rank` | Rank | number |
| `sponsored` | Sponsored | boolean |
| `images` | Images | array |
| `productUrl` | Product URL | url |
| `description` | Description | text |
| `countryOfOrigin` | Country of Origin | text |
| `manufacturer` | Manufacturer | text |
| `seller` | Seller | text |
| `specifications` | Specifications | object_array |
| `storeId` | Store ID | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |


---

# Blinkit Products API

Extract Blinkit product details — MRP, selling price, stock — from product URLs

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/blinkit/products/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | Product page URL to scrape. |
| `store_id` | string | No | Dark store — pick a city and pincode first. |
| `lat` | number | No | Or target by coordinates — latitude (use with longitude). |
| `lon` | number | No | Or target by coordinates — longitude (use with latitude). |
| `city` | string | No | City — filters the pincode and store lists. |
| `pincode` | string | No | Pincode — pick a city first; filters the store list. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/blinkit/products/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"url":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/blinkit/products/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "url": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productName` | Product Name | text |
| `brand` | Brand | text |
| `variantId` | Variant ID | text |
| `productId` | Product ID | text |
| `price` | Price | currency |
| `mrp` | MRP | currency |
| `discount` | Discount % | percentage |
| `packSize` | Pack Size | text |
| `inStock` | In Stock | boolean |
| `stockCount` | Stock Count | number |
| `rating` | Rating | rating |
| `ratingCount` | Rating Count | number |
| `category` | Category | text |
| `rank` | Rank | number |
| `sponsored` | Sponsored | boolean |
| `images` | Images | array |
| `productUrl` | Product URL | url |
| `description` | Description | text |
| `countryOfOrigin` | Country of Origin | text |
| `manufacturer` | Manufacturer | text |
| `seller` | Seller | text |
| `specifications` | Specifications | object_array |
| `storeId` | Store ID | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |


---

# Blinkit Search API

Search Blinkit by query — listings, prices, stock, ratings, images

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/blinkit/search/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | What to search for (e.g. milk, chocolate). |
| `store_id` | string | No | Dark store — pick a city and pincode first. |
| `lat` | number | No | Or target by coordinates — latitude (use with longitude). |
| `lon` | number | No | Or target by coordinates — longitude (use with latitude). |
| `city` | string | No | City — filters the pincode and store lists. |
| `pincode` | string | No | Pincode — pick a city first; filters the store list. |
| `maxResults` | integer | No | How many products to return for the search. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/blinkit/search/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"query":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/blinkit/search/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "query": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productName` | Product Name | text |
| `brand` | Brand | text |
| `variantId` | Variant ID | text |
| `productId` | Product ID | text |
| `price` | Price | currency |
| `mrp` | MRP | currency |
| `discount` | Discount % | percentage |
| `packSize` | Pack Size | text |
| `inStock` | In Stock | boolean |
| `stockCount` | Stock Count | number |
| `rating` | Rating | rating |
| `ratingCount` | Rating Count | number |
| `category` | Category | text |
| `rank` | Rank | number |
| `sponsored` | Sponsored | boolean |
| `images` | Images | array |
| `productUrl` | Product URL | url |
| `description` | Description | text |
| `countryOfOrigin` | Country of Origin | text |
| `manufacturer` | Manufacturer | text |
| `seller` | Seller | text |
| `specifications` | Specifications | object_array |
| `storeId` | Store ID | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |


---

# Booking Listings API

Get Booking.com property listing records — price, guest score, rooms, facilities, photos, location, and operator/trader info — by destination search or hotel URL

**Pricing:** $0.002 per listing

**Endpoint:** `POST /v1/data/booking/listings/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `location` | string | No | By Search: a destination or search keyword (city, region, landmark, or area), e.g. "Paris" or "Bali villas". |
| `checkIn` | date | No | Check-in date (YYYY-MM-DD). Required for price and room availability — omit it and price/room columns come back empty. |
| `checkOut` | date | No | Check-out date (YYYY-MM-DD). Required alongside check-in for pricing. |
| `maxResults` | integer | No | Maximum number of listings to return. Use 0 for all. |
| `propertyType` | string | No | Filter to a property type (Hotels, Apartments, Villas, Guest houses, Hostels, B&Bs, Resorts, Homestays). |
| `starsCountFilter` | string | No | Filter to properties with at least this official star class (1–5). |
| `minScore` | number | No | Filter to properties with at least this guest score (0–10, e.g. 8.5). |
| `minMaxPrice` | string | No | Nightly/total price range for the searched dates, as min and max in the chosen currency (e.g. 150 to 400). |
| `sortBy` | string | No | Result sort order (defaults to relevance). |
| `currency` | string | No | Currency for prices (EUR, USD, GBP, JPY, INR, MXN, AUD, CAD, …). |
| `language` | string | No | Language/locale for the property data. |
| `urls` | array | No | By URL: Booking.com hotel URLs or search-page URLs. Add check-in/check-out dates for price and room availability. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/booking/listings/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/booking/listings/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `propertyName` | Property Name | text |
| `propertyUrl` | Property URL | text |
| `propertyId` | Property ID | text |
| `propertyType` | Property Type | text |
| `starRating` | Star Rating | number |
| `city` | City | text |
| `country` | Country | text |
| `fullAddress` | Full Address | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |
| `guestScore` | Guest Score | number |
| `scoreLabel` | Score Label | text |
| `reviewCount` | Review Count | number |
| `categoryScores` | Category Scores | object_array |
| `priceFrom` | Price From | number |
| `currency` | Currency | text |
| `rooms` | Rooms | object_array |
| `roomTypes` | Room Types | object_array |
| `mainImage` | Main Image | text |
| `images` | Images | array |
| `facilities` | Facilities | object_array |
| `description` | Description | text |
| `highlights` | Highlights | object_array |
| `checkInTime` | Check-in Time | text |
| `checkOutTime` | Check-out Time | text |
| `policies` | Policies | object_array |
| `finePrint` | Fine Print | text |
| `surroundings` | Surroundings | object |
| `traderInfo` | Trader Info | object |
| `licenseNumbers` | License Numbers | array |
| `host` | Host | object |
| `mapUrl` | Map URL | text |


---

# Booking Reviews API

Extract Booking.com hotel reviews, ratings, stars, and reviewer details from hotel URLs

**Pricing:** $0.002 per review

**Endpoint:** `POST /v1/data/booking/reviews/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | Yes | Booking.com hotel URL to scrape reviews from. |
| `maxReviewsPerHotel` | integer | No | Number of reviews to return. Use 0 for all. |
| `sortBy` | string | No | Sort order for reviews. |
| `cutoffDate` | date | No | Stop loading older/newer reviews past this date. Only applies when Sort By = Newest first OR Oldest first. |
| `reviewScores` | array | No | Filter to reviews in these score bands. Leave empty for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/booking/reviews/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"urls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/booking/reviews/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "urls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `reviewId` | Review ID | text |
| `reviewTitle` | Review Title | text |
| `liked` | Liked | text |
| `disliked` | Disliked | text |
| `rating` | Rating | rating |
| `postedDate` | Posted Date | text |
| `language` | Language | text |
| `travelerType` | Traveler Type | text |
| `room` | Room | text |
| `checkIn` | Check-In | text |
| `checkOut` | Check-Out | text |
| `helpfulVotes` | Helpful Votes | number |
| `photos` | Photos | array |
| `propertyResponse` | Property Response | text |
| `reviewerName` | Reviewer Name | text |
| `reviewerLocation` | Reviewer Location | text |
| `reviewerAvatar` | Reviewer Avatar | url |
| `hotel` | Hotel | object |


---

# Meta Ads Library API

See every ad a brand is running in Meta's Ad Library — one row per ad with creative copy, headline, CTA, destination link, dates, how long it's been live, format, platforms, the advertiser's profile, carousel cards, and EU reach where it's disclosed.

**Pricing:** $0.005 per ad

**Endpoint:** `POST /v1/data/facebook/ads/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | Yes | Facebook page URL or handle (e.g. facebook.com/nike). |
| `maxResults` | integer | No | Number of ads to return in total. Use 0 for all. |
| `activeStatus` | string | No | Which ads to return. |
| `isDetailsPerAd` | boolean | No | Pull each ad's advertiser profile and EU transparency block. Keep on for the full record. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/facebook/ads/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"urls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/facebook/ads/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "urls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `adUrl` | Ad URL | url |
| `libraryId` | Library ID | text |
| `pageUrl` | Page URL | url |
| `headline` | Headline | text |
| `bodyText` | Body Text | text |
| `linkDescription` | Link Description | text |
| `ctaText` | CTA Text | text |
| `destinationUrl` | Destination URL | url |
| `format` | Format | text |
| `startDate` | Start Date | datetime |
| `endDate` | End Date | datetime |
| `daysActive` | Days Active | number |
| `isActive` | Is Active | text |
| `mediaUrl` | Media URL | url |
| `mediaType` | Media Type | text |
| `platforms` | Platforms | array |
| `advertiser` | Advertiser | object |
| `cards` | Cards | object_array |
| `euReach` | EU Reach | object |
| `reachBreakdown` | Reach Breakdown | object_array |
| `variantCount` | Variant Count | number |


---

# Facebook Comments API

Extract comments and replies from Facebook posts, reels, and photos — text, author, likes, reply count, and thread position — by post URL

**Pricing:** $0.0025 per comment

**Endpoint:** `POST /v1/data/facebook/comments/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `post_url` | string | Yes | A Facebook post, reel, or photo permalink to scrape comments from. |
| `maxResults` | integer | No | Number of comments to return. Use 0 for all. |
| `includeNestedComments` | boolean | No | On: also pull replies under each comment (returned as their own rows). Off: top-level comments only. |
| `viewOption` | string | No | How Facebook orders the comments it returns. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/facebook/comments/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"post_url":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/facebook/comments/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "post_url": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `postUrl` | Post URL | text |
| `postId` | Post ID | text |
| `pageId` | Page ID | text |
| `commentUrl` | Comment URL | text |
| `commentText` | Comment Text | text |
| `commentDate` | Comment Date | text |
| `likes` | Likes | number |
| `replies` | Replies | number |
| `replyDepth` | Reply Depth | number |
| `isReply` | Is Reply | boolean |
| `commenter` | Commenter | text |
| `commenterUrl` | Commenter URL | text |
| `commenterId` | Commenter ID | text |
| `replyingTo` | Replying To | text |
| `threadRootAuthor` | Thread Root Author | text |
| `commentMediaType` | Comment Media Type | text |
| `commentMediaCaption` | Comment Media Caption | text |
| `commentMediaUrl` | Comment Media URL | text |
| `commenterPicture` | Commenter Picture | text |
| `postCaption` | Post Caption | text |
| `replyingToDetails` | Replying To (details) | object |


---

# Facebook Events API

Find Facebook events by keyword search or event URL — one row per event with name, date, venue, host, attendance, and ticket link.

**Pricing:** $0.01 per event

**Endpoint:** `POST /v1/data/facebook/events/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `searchQueries` | string | No | A keyword search query to discover events (e.g. Concert New York, tech conference Berlin). |
| `startUrls` | string | No | A Facebook event, explore, search, or place URL to scrape events from. |
| `maxResults` | integer | No | Number of events to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/facebook/events/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/facebook/events/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `eventName` | Event Name | text |
| `eventUrl` | Event URL | text |
| `eventId` | Event ID | text |
| `description` | Description | text |
| `startDate` | Start Date | text |
| `dateTime` | Date Time | text |
| `duration` | Duration | text |
| `frequency` | Frequency | text |
| `isPast` | Is Past | boolean |
| `isCanceled` | Is Canceled | boolean |
| `isOnline` | Is Online | boolean |
| `going` | Going | number |
| `interested` | Interested | number |
| `host` | Host | text |
| `hosts` | Hosts | object_array |
| `venueName` | Venue Name | text |
| `venueUrl` | Venue URL | text |
| `address` | Address | text |
| `street` | Street | text |
| `city` | City | text |
| `country` | Country | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |
| `category` | Category | text |
| `tickets` | Tickets | object |
| `externalLinks` | External Links | array |
| `coverImageUrl` | Cover Image URL | text |
| `imageCaption` | Image Caption | text |
| `occurrences` | Occurrences | object_array |


---

# Facebook Followers & Following API

Pull the profiles that follow a Facebook page — or the profiles that page follows — as clean stubs with name, profile URL, profile ID, avatar, and bio. Choose followers, following, or both.

**Pricing:** $0.0075 per profile

**Endpoint:** `POST /v1/data/facebook/followers/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page_urls` | string | Yes | Facebook page or profile URL, or vanity handle (e.g. cocacola). |
| `followType` | string | No | Pull the page's followers, the profiles it follows, or both. |
| `limit` | integer | No | Number of profiles to return in total. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/facebook/followers/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"page_urls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/facebook/followers/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "page_urls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `followerName` | Follower Name | text |
| `profileUrl` | Profile URL | text |
| `profileId` | Profile ID | text |
| `avatarUrl` | Avatar URL | text |
| `bio` | Bio | text |
| `relationship` | Relationship | text |


---

# Facebook Marketplace API

Extract Facebook Marketplace listings — title, price, condition, location, attributes, and photos — from any category or search URL.

**Pricing:** $0.01 per listing

**Endpoint:** `POST /v1/data/facebook/marketplace/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | A Facebook Marketplace category or search URL. Examples: https://www.facebook.com/marketplace/nyc/electronics or https://www.facebook.com/marketplace/london/search/?query=bicycle |
| `maxResults` | integer | No | Number of listings to return in total. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/facebook/marketplace/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"url":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/facebook/marketplace/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "url": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `listingTitle` | Listing Title | text |
| `listingUrl` | Listing URL | text |
| `description` | Description | text |
| `price` | Price | number |
| `currency` | Currency | text |
| `originalPrice` | Original Price | number |
| `condition` | Condition | text |
| `attributes` | Attributes | object_array |
| `mileage` | Mileage | text |
| `location` | Location | text |
| `city` | City | text |
| `state` | State | text |
| `postalCode` | Postal Code | text |
| `country` | Country | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |
| `deliveryOptions` | Delivery Options | array |
| `listedAt` | Listed At | text |
| `primaryPhoto` | Primary Photo | text |
| `photos` | Photos | object_array |
| `videoUrl` | Video URL | text |


---

# Facebook Pages API

Look up public Facebook pages and get a clean business profile for each — name, category, intro, follower and like counts, contact details (phone, email, website, address), rating, price range, hours, the confirmed owner behind the page, whether it's running ads, and its links to Instagram, X, YouTube, TikTok and more.

**Pricing:** $0.01 per page

**Endpoint:** `POST /v1/data/facebook/pages/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pageUrls` | array | Yes | A Facebook page to look up — a handle like "nike" or a full URL like https://www.facebook.com/NASA/. Duplicate inputs are removed before the run. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/facebook/pages/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"pageUrls":["..."]}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/facebook/pages/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "pageUrls": [
        "..."
    ]
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `pageName` | Page Name | text |
| `username` | Username | text |
| `pageUrl` | Page URL | text |
| `pageId` | Page ID | text |
| `category` | Category | text |
| `intro` | Intro | text |
| `pageCreated` | Page Created | text |
| `followers` | Followers | number |
| `likes` | Likes | number |
| `following` | Following | number |
| `talkingAbout` | Talking About | number |
| `wereHere` | Were Here | number |
| `phone` | Phone | text |
| `email` | Email | text |
| `website` | Website | text |
| `otherWebsites` | Other Websites | array |
| `address` | Address | text |
| `addressMapUrl` | Address Map URL | text |
| `recommendPercent` | Recommend Percent | number |
| `reviewCount` | Review Count | number |
| `priceRange` | Price Range | text |
| `businessHours` | Business Hours | text |
| `services` | Services | array |
| `confirmedOwner` | Confirmed Owner | text |
| `runningAds` | Running Ads | boolean |
| `adLibraryId` | Ad Library ID | text |
| `profilePictureUrl` | Profile Picture URL | text |
| `coverPhotoUrl` | Cover Photo URL | text |
| `profilePhotoLink` | Profile Photo Link | text |
| `socialLinks` | Social Links | object_array |
| `personalProfile` | Personal Profile | object |


---

# Facebook Posts and Groups API

Extract posts and reels from any public Facebook page, profile, or group — text, author, engagement (reactions, comments, shares, video views), the full reaction-type breakdown, media, links, hashtags, mentions, and collaborators

**Pricing:** $0.005 per post

**Endpoint:** `POST /v1/data/facebook/posts/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | No | Public Facebook page or profile URL to scrape posts from (e.g. facebook.com/nike or facebook.com/zuck). Private profiles return no results. Use this OR Group URL, not both. |
| `groupUrls` | string | No | Public Facebook group URL to scrape member posts from (e.g. facebook.com/groups/<group>). Use this OR Page or Profile URL, not both. |
| `maxResults` | integer | No | Number of posts to return. Use 0 for all. |
| `onlyPostsNewerThan` | date | No | Only get posts published on or after this date (YYYY-MM-DD). |
| `onlyPostsOlderThan` | date | No | Only get posts published on or before this date (YYYY-MM-DD). |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/facebook/posts/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/facebook/posts/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `contentType` | Content Type | text |
| `postUrl` | Post URL | url |
| `postId` | Post ID | text |
| `postedAt` | Posted At | datetime |
| `text` | Text | text |
| `reactions` | Reactions | number |
| `comments` | Comments | number |
| `shares` | Shares | number |
| `views` | Views | number |
| `videoDuration` | Video Duration | number |
| `reactionBreakdown` | Reaction Breakdown | object |
| `author` | Author | object |
| `source` | Source | object |
| `media` | Media | object |
| `linkPreview` | Link Preview | object |
| `mentions` | Mentions | object_array |
| `collaborators` | Collaborators | object_array |
| `topComments` | Top Comments | object_array |
| `hashtags` | Hashtags | array |


---

# Facebook Reels API

Pull reels from public Facebook pages — play count, publish time, audio track, video and thumbnail links, dimensions, and caption/dubbed languages, with the owning page's identity. No captions text or like/comment counts (this source returns plays as the only engagement number).

**Pricing:** $0.005 per reel

**Endpoint:** `POST /v1/data/facebook/reels/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `startUrls` | string | Yes | Facebook page or profile URL to pull recent reels from. |
| `maxReels` | integer | No | Number of reels to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/facebook/reels/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"startUrls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/facebook/reels/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "startUrls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `reelUrl` | Reel URL | text |
| `reelId` | Reel ID | text |
| `page` | Page | object |
| `plays` | Plays | number |
| `playsLabel` | Plays Label | text |
| `publishedAt` | Published At | text |
| `durationSec` | Duration (sec) | number |
| `dimensions` | Dimensions | text |
| `videoUrl` | Video URL | text |
| `thumbnailUrl` | Thumbnail URL | text |
| `audioTitle` | Audio Title | text |
| `audioArtist` | Audio Artist | text |
| `audioTrack` | Audio Track | text |
| `audioType` | Audio Type | text |
| `audioTrackId` | Audio Track ID | text |
| `remixable` | Remixable | boolean |
| `audioMuted` | Audio Muted | boolean |
| `captionLanguages` | Caption Languages | object_array |
| `captionsFileUrl` | Captions File URL | text |
| `dubbedAudioLanguages` | Dubbed Audio Languages | object_array |
| `error` | Error | text |
| `errorDescription` | Error Description | text |


---

# Facebook Reviews API

Extract Facebook page reviews — the recommend / don't-recommend flag, review text, date, reviewer, likes, tags, and any photos — from one or more Facebook page URLs

**Pricing:** $0.0025 per review

**Endpoint:** `POST /v1/data/facebook/reviews/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | Yes | Facebook page URL to scrape reviews from (e.g. https://www.facebook.com/disneylandparis or its /reviews tab). |
| `maxResults` | integer | No | Number of reviews to return in total. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/facebook/reviews/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"urls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/facebook/reviews/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "urls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `recommended` | Recommended | text |
| `reviewText` | Review Text | text |
| `reviewDate` | Review Date | text |
| `reviewUrl` | Review URL | text |
| `reviewId` | Review ID | text |
| `reviewerName` | Reviewer Name | text |
| `reviewerProfileUrl` | Reviewer Profile URL | text |
| `likes` | Likes | number |
| `commentCount` | Comment Count | number |
| `tags` | Tags | array |
| `reviewerAvatar` | Reviewer Avatar | text |
| `topComments` | Top Comments | object_array |
| `photos` | Photos | object_array |
| `error` | Error | text |
| `errorDescription` | Error Description | text |


---

# Farfetch Products API

Full Farfetch product detail — price, discount, per-size availability, seller boutique and category — one row per product, from a designer page, a listing URL or a product URL.

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/farfetch/products/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `listing_url` | string | No | A Farfetch designer or listing page URL, e.g. https://www.farfetch.com/shopping/men/gucci/items.aspx. Designer pages return that brand's catalog. |
| `query` | string | No | A brand or keyword to look up, e.g. 'gucci'. We build the listing URL for you. |
| `urls` | array | No | One or more Farfetch product URLs, e.g. https://www.farfetch.com/shopping/men/gucci-jordaan-horsebit-loafers-item-19426833.aspx. One per line. |
| `maxResults` | integer | No | Number of products to return from a listing page. Use 0 for all. Ignored when you pass product URLs. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/farfetch/products/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/farfetch/products/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productId` | Product ID | text |
| `productName` | Product Name | text |
| `brand` | Brand | text |
| `productUrl` | Product URL | url |
| `description` | Description | text |
| `color` | Color | text |
| `category` | Category | text |
| `categoryPath` | Category Path | text |
| `gender` | Gender | text |
| `season` | Season | text |
| `price` | Price | number |
| `fullPrice` | Full Price | number |
| `discountPercent` | Discount Percent | number |
| `currency` | Currency | text |
| `seller` | Seller | text |
| `sizes` | Sizes | array |
| `variants` | Variants | object_array |
| `measurements` | Measurements | object_array |
| `returns` | Returns | object |
| `stockQuantity` | Stock Quantity | number |
| `availability` | Availability | array |
| `label` | Label | text |
| `condition` | Condition | text |
| `images` | Images | array |


---

# Flipkart Products API

Extract Flipkart product details — title, price, MRP, discount, ratings, specifications, seller info — from product URLs, with optional per-pincode delivery and pricing

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/flipkart/products/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `products` | array | Yes | List of Flipkart product URLs to scrape. Use param name 'Products' in confirm widget. |
| `pincodes` | array | No | Delivery pincodes (6 digits each). Optional — uses default if blank. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/flipkart/products/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"products":["..."]}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/flipkart/products/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "products": [
        "..."
    ]
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productUrl` | Product URL | url |
| `productId` | Product ID | text |
| `title` | Title | text |
| `brand` | Brand | text |
| `price` | Price | currency |
| `mrp` | MRP | currency |
| `discount` | Discount % | number |
| `rating` | Rating | rating |
| `ratingCount` | Rating Count | number |
| `reviewCount` | Review Count | number |
| `specifications` | Specifications | object |
| `highlights` | Highlights | array |
| `description` | Description | text |
| `sellers` | Sellers | object_array |
| `pincode` | Pincode | text |
| `available` | Available | boolean |
| `deliverable` | Deliverable | boolean |
| `deliveryDate` | Delivery Date | text |
| `returnPolicy` | Return Policy | text |
| `warranty` | Warranty | text |


---

# GOAT Products API

Full GOAT product detail — every size, its asking price and availability — one row per product, from a search, a brand page or a product URL.

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/goat/products/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `listing_url` | string | No | A GOAT listing page URL — a brand page (https://www.goat.com/brand/salomon) or a search results page (https://www.goat.com/search?query=nike). Brand pages return the full catalog; searches are relevance-ranked. Any GOAT filter in the URL is honoured. |
| `query` | string | No | A keyword to search GOAT for, e.g. 'jordan 1 chicago'. We build the search URL for you — no need to paste one. Relevance-ranked, so it drops roughly 30-40% of a brand; use a brand page as the Listing URL for a full catalog. |
| `urls` | array | No | One or more GOAT product URLs, e.g. https://www.goat.com/sneakers/air-jordan-1-high-1985-4280. One per line. |
| `maxResults` | integer | No | Number of products to return from a search or brand page. Use 0 for all. Ignored when you pass product URLs. |
| `country_code` | string | No | Shopping region. Shapes which sellers and sizes are offered and their asking prices. Regions without their own market get GOAT's global pricing (the same listings as the default). Prices are quoted in USD regardless. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/goat/products/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/goat/products/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productId` | Product ID | number |
| `productName` | Product Name | text |
| `sku` | SKU | text |
| `productUrl` | Product URL | url |
| `brand` | Brand | text |
| `colorway` | Colorway | text |
| `color` | Color | text |
| `category` | Category | text |
| `subcategory` | Subcategory | text |
| `categoryLevel3` | Category Level 3 | text |
| `categoryLevel4` | Category Level 4 | text |
| `activities` | Activities | array |
| `gender` | Gender | text |
| `releaseDate` | Release Date | date |
| `season` | Season | text |
| `story` | Story | text |
| `styleTags` | Style Tags | array |
| `detailTags` | Detail Tags | array |
| `merchandisingTags` | Merchandising Tags | array |
| `specialType` | Special Type | text |
| `isResellable` | Is Resellable | boolean |
| `directShipping` | Direct Shipping | boolean |
| `maxOffer` | Max Offer | currency |
| `sizeType` | Size Type | text |
| `sizeUnit` | Size Unit | text |
| `retailPrice` | Retail Price | currency |
| `images` | Images | array |
| `attributes` | Attributes | object_array |
| `listings` | Listings | object_array |


---

# Google Maps Places API

Search Google Maps places for address, rating, reviews, contact info, opening hours, and images

**Pricing:** $0.004 per place

**Endpoint:** `POST /v1/data/google-maps/places/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `keywords` | string | No | What to search for (e.g. 'italian restaurants'). Use this together with Location to discover places. — OR — leave blank and pass specific URLs in the Place URLs field below. |
| `location` | string | No | Where to search (e.g. 'New York, USA'). One location per run — to search several, run them one at a time. Required for keyword search. |
| `urls` | array | No | Specific Google Maps place URLs or Place IDs (e.g. ChIJreV9aqYWdkgROM_boL6YbwA). Use this when you already know the places — alternative to Search Terms + Location. |
| `maxResults` | integer | No | Number of places to return. Use 0 for all. |
| `minimumRating` | string | No | Skip places rated below this. Leave empty for no filter. |
| `websiteFilter` | string | No | Filter by website presence. Useful for lead generation (find places without a website). |
| `maxImages` | integer | No | Number of images to fetch per place. 0 = none, 999 = all. More images cost more and slow the run. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/google-maps/places/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/google-maps/places/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `placeUrl` | Place URL | url |
| `businessName` | Business Name | text |
| `placeId` | Place ID | text |
| `category` | Category | text |
| `allCategories` | All Categories | array |
| `rating` | Rating | rating |
| `reviews` | Reviews | number |
| `fiveStarReviews` | Five-Star Reviews | number |
| `fourStarReviews` | Four-Star Reviews | number |
| `threeStarReviews` | Three-Star Reviews | number |
| `twoStarReviews` | Two-Star Reviews | number |
| `oneStarReviews` | One-Star Reviews | number |
| `reviewKeywords` | Review Keywords | object_array |
| `priceRange` | Price Range | text |
| `phone` | Phone | phone |
| `website` | Website | url |
| `address` | Address | text |
| `neighborhood` | Neighborhood | text |
| `city` | City | text |
| `state` | State | text |
| `postalCode` | Postal Code | text |
| `country` | Country | text |
| `street` | Street | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |
| `plusCode` | Plus Code | text |
| `locatedIn` | Located In | text |
| `floor` | Floor | text |
| `permanentlyClosed` | Permanently Closed | boolean |
| `temporarilyClosed` | Temporarily Closed | boolean |
| `unclaimed` | Unclaimed | boolean |
| `description` | Description | text |
| `attributes` | Attributes | object |
| `openingHours` | Opening Hours | object |
| `specialHours` | Special Hours | array |
| `popularTimes` | Popular Times | object |
| `liveOccupancyPercent` | Live Occupancy Percent | number |
| `liveStatus` | Live Status | text |
| `coverPhoto` | Cover Photo | url |
| `photos` | Photos | array |
| `photoCount` | Photo Count | number |
| `relatedPlaces` | Related Places | object_array |
| `ownerPosts` | Owner Posts | object_array |
| `menuUrl` | Menu URL | url |
| `reserveTableUrl` | Reserve Table URL | url |
| `reservationLinks` | Reservation Links | object_array |
| `hotelType` | Hotel Type | text |
| `hotelDescription` | Hotel Description | text |
| `similarHotels` | Similar Hotels | object_array |
| `hotelAds` | Hotel Ads | object_array |


---

# Google Maps Reviews API

Extract reviews from Google Maps places — reviewer info, ratings, text, responses — using start URLs and max reviews

**Pricing:** $0.00025 per review

**Endpoint:** `POST /v1/data/google-maps/reviews/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | Yes | Google Maps place URL to scrape reviews from. |
| `maxReviews` | integer | No | Number of reviews to return. Use 0 for all. |
| `sortBy` | string | No | Sort order for reviews. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/google-maps/reviews/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"urls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/google-maps/reviews/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "urls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `placeUrl` | Place URL | url |
| `reviewUrl` | Review URL | url |
| `reviewText` | Review Text | text |
| `stars` | Stars | rating |
| `postedAt` | Posted At | text |
| `reviewer` | Reviewer | text |
| `reviewerUrl` | Reviewer URL | url |
| `reviewerPhoto` | Reviewer Photo | url |
| `reviewerTotalReviews` | Reviewer Total Reviews | number |
| `localGuide` | Local Guide | boolean |
| `reviewLikes` | Review Likes | number |
| `originalLanguage` | Original Language | text |
| `translatedLanguage` | Translated Language | text |
| `translatedText` | Translated Text | text |
| `ownerResponse` | Owner Response | text |
| `ownerResponseDate` | Owner Response Date | text |
| `reviewContext` | Review Context | object |
| `businessName` | Business Name | text |
| `category` | Category | text |
| `allCategories` | All Categories | array |
| `businessRating` | Business Rating | rating |
| `businessReviews` | Business Reviews | number |
| `businessPhoto` | Business Photo | url |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |
| `businessAddress` | Business Address | text |
| `country` | Country | text |
| `language` | Language | text |
| `permanentlyClosed` | Permanently Closed | boolean |
| `temporarilyClosed` | Temporarily Closed | boolean |
| `placeId` | Place ID | text |


---

# Google Images API

Extract Google Images details — URL, source, description, dimensions, and thumbnail — by providing a query and image count

**Pricing:** $0.001 per result

**Endpoint:** `POST /v1/data/google/images/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `queries` | string | Yes | Image search query to run on Google Images. |
| `maxResults` | integer | No | Number of images to return. Use 0 for all (the full first page, ~300). |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/google/images/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"queries":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/google/images/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "queries": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `title` | Title | text |
| `imageUrl` | Image URL | url |
| `sourcePageUrl` | Source Page URL | url |
| `sourceDomain` | Source Domain | text |
| `imageWidth` | Image Width | number |
| `imageHeight` | Image Height | number |
| `orientation` | Orientation | text |
| `megapixels` | Megapixels | number |
| `imageType` | Image Type | text |
| `thumbnailUrl` | Thumbnail URL | url |


---

# Google News API

Get Google News articles for any search query — headline, publisher, published date, link, and thumbnail — with region/language and date-range filters

**Pricing:** $0.002 per new

**Endpoint:** `POST /v1/data/google/news/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | What to search for in Google News. |
| `maxResults` | integer | No | Number of news articles to return. Use 0 for all. |
| `timeframe` | string | No | How far back to look. Leave blank for no limit. |
| `region_language` | string | No | Country market and article language — the two go together (Google News only supports these specific combinations). Defaults to US English. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/google/news/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"query":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/google/news/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "query": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `title` | Title | text |
| `source` | Source | text |
| `articleUrl` | Article URL | url |
| `publishedAt` | Published At | text |
| `publishedTimestamp` | Published Timestamp | number |
| `imageUrl` | Image URL | url |


---

# Google Play Reviews API

Extract Google Play reviews, including reviewer name, rating, publish date, and full text

**Pricing:** $0.0001 per review

**Endpoint:** `POST /v1/data/google/play/reviews/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `inputs` | string | Yes | A Google Play app URL or package ID (e.g. org.telegram.messenger) to scrape reviews from. |
| `maxResults` | integer | No | Number of reviews to return. Use 0 for all. |
| `country` | string | No | Country's Google Play store to pull reviews from. |
| `language` | string | No | Language to pull reviews in. |
| `sortBy` | string | No | Sort order for reviews. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/google/play/reviews/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"inputs":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/google/play/reviews/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "inputs": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `reviewer` | Reviewer | text |
| `rating` | Rating | rating |
| `reviewText` | Review Text | text |
| `posted` | Posted | text |
| `appVersion` | App Version | text |
| `helpfulVotes` | Helpful Votes | number |
| `appUrl` | App URL | url |
| `reviewUrl` | Review URL | url |
| `developerReply` | Developer Reply | text |
| `replyDate` | Reply Date | text |
| `reviewerPhoto` | Reviewer Photo | url |
| `subratings` | Subratings | object_array |


---

# Google Search API

Scrape Google Search results — organic links, snippets, titles — with country/language filters and search operators

**Pricing:** $0.001 per page

**Endpoint:** `POST /v1/data/google/search/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `queries` | string | Yes | A Google search query or full search URL. Supports operators like site:, OR, intitle:, etc. |
| `maxPages` | integer | No | Number of Google result pages to scrape (~10 organic results per page). Use 0 for all. Google itself returns at most ~10 pages (~100 results) per query — higher values won't return more. |
| `startDate` | date | No | Earliest result date. Leave blank for no lower bound. |
| `endDate` | date | No | Latest result date. Leave blank for no upper bound. |
| `country` | string | No | Country to search from (uses google.<tld> domain). Defaults to US (google.com). |
| `searchLanguage` | string | No | Language of search results (e.g. only German pages). |
| `site` | string | No | Limit to a specific site (e.g. example.com). |
| `relatedToSite` | string | No | Find pages related to a specific site (e.g. example.com). Ignored if Site Filter is set. |
| `fileTypes` | array | No | Filter to specific file types (e.g. pdf, doc). |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/google/search/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"queries":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/google/search/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "queries": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `rank` | Rank | number |
| `title` | Title | text |
| `link` | Link | url |
| `domain` | Domain | text |
| `source` | Source | text |
| `snippet` | Snippet | text |
| `publishedDate` | Published Date | text |
| `aiAnswer` | AI Answer | text |
| `aiAnswerSources` | AI Answer Sources | object_array |
| `relatedSearches` | Related Searches | object_array |
| `relatedQuestions` | Related Questions | object_array |


---

# Google Shopping API

Extract Google Shopping product listings and details by keyword, country, language, count, and date range

**Pricing:** $0.003 per result

**Endpoint:** `POST /v1/data/google/shopping/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `queries` | string | Yes | Google Shopping search query to run. |
| `maxResults` | integer | No | Number of products to return. Use 0 for all. |
| `dateRange` | string | No | Limit results to recently-listed products. |
| `country` | string | No | Country to search Google Shopping from. |
| `language` | string | No | Language for results. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/google/shopping/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"queries":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/google/shopping/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "queries": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `title` | Title | text |
| `merchant` | Merchant | text |
| `price` | Price | currency |
| `priceValue` | Price Value | number |
| `rating` | Rating | rating |
| `reviewCount` | Review Count | number |
| `position` | Position | number |
| `productId` | Product ID | text |
| `image` | Image | url |
| `productUrl` | Product URL | url |


---

# Indeed Jobs API

Extract Indeed job listings — title, company, salary, location, skills, hiring-demand signals, and apply links — by keyword + location, or by specific Indeed job ID

**Pricing:** $0.00005 per job

**Endpoint:** `POST /v1/data/indeed/jobs/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `keyword` | string | No | Job title or search keywords (e.g. "warehouse associate"). |
| `location` | string | No | City, state, or region (e.g. "Houston, TX"). |
| `country` | string | No | Indeed country domain to search. (United Kingdom may be unreliable upstream.) |
| `remote` | string | No | Set to "remote" to return only remote roles. |
| `jobType` | string | No | Filter by employment type (e.g. "fulltime", "parttime", "contract"). |
| `fromDays` | integer | No | Only return jobs posted within this many days (e.g. 7). |
| `sort` | string | No | Result ordering (e.g. "date" for most recent first). |
| `jobKeys` | array | No | Specific Indeed job IDs to look up directly. |
| `maxItems` | integer | No | Number of job listings to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/indeed/jobs/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/indeed/jobs/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `jobId` | Job ID | text |
| `jobUrl` | Job URL | url |
| `applyUrl` | Apply URL | url |
| `jobTitle` | Job Title | text |
| `normalizedTitle` | Normalized Title | text |
| `companyName` | Company Name | text |
| `companyKey` | Company Key | text |
| `company` | Company | object |
| `city` | City | text |
| `state` | State | text |
| `country` | Country | text |
| `postalCode` | Postal Code | text |
| `streetAddress` | Street Address | text |
| `fullAddress` | Full Address | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |
| `salaryMin` | Salary Min | currency |
| `salaryMax` | Salary Max | currency |
| `salaryCurrency` | Salary Currency | text |
| `salaryPeriod` | Salary Period | text |
| `workplaceType` | Workplace Type | text |
| `employmentType` | Employment Type | array |
| `workSetting` | Work Setting | array |
| `educationLevel` | Education Level | text |
| `experienceLevel` | Experience Level | text |
| `certifications` | Certifications | array |
| `physicalRequirements` | Physical Requirements | array |
| `skills` | Skills | array |
| `occupation` | Occupation | text |
| `occupationCategories` | Occupation Categories | array |
| `applyStarts` | Apply Starts | integer |
| `numberOfHires` | Number of Hires | integer |
| `employerResponsive` | Employer Responsive | boolean |
| `employerResponseRate` | Employer Response Rate | number |
| `employerAvgResponseTimeDays` | Employer Avg Response Time (Days) | number |
| `urgentHire` | Urgent Hire | boolean |
| `highVolumeHiring` | High Volume Hiring | boolean |
| `sponsored` | Sponsored | boolean |
| `posted` | Posted | text |
| `jobDescription` | Job Description | text |
| `benefits` | Benefits | array |
| `sourceType` | Source Type | text |
| `sourceName` | Source Name | text |
| `language` | Language | text |
| `shift` | Shift | array |
| `travel` | Travel | array |
| `salaryText` | Salary Text | text |
| `eligibility` | Eligibility | array |


---

# Instagram Comments API

Extract top Instagram comments — text, timestamps, likes, commenter details, and thread sizes — from post or reel URLs

**Pricing:** $0.0005 per comment

**Endpoint:** `POST /v1/data/instagram/comments/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | Yes | Instagram post or reel URL to get comments from. E.g. https://www.instagram.com/p/ABC123/ or https://www.instagram.com/reel/XYZ789/. |
| `maxResults` | integer | No | Total number of top-level comments to return. Replies inside threads are not returned; the Comment Replies column counts them. Use 0 for all. Capped at 10,000 per post. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/instagram/comments/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"urls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/instagram/comments/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "urls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `postUrl` | Post URL | url |
| `comment` | Comment | text |
| `commentUrl` | Comment URL | url |
| `commentedAt` | Commented At | text |
| `likes` | Likes | number |
| `commentReplies` | Comment Replies | number |
| `commenterId` | Commenter ID | text |
| `commenterUsername` | Commenter Username | text |
| `commenterName` | Commenter Name | text |
| `commenterUrl` | Commenter URL | url |
| `commenterVerified` | Commenter Verified | boolean |
| `commenterPrivate` | Commenter Private | boolean |


---

# Instagram Followers & Following API

Extract the followers or following list of any public Instagram account — handle, name, verification, and privacy

**Pricing:** $0.00075 per profile

**Endpoint:** `POST /v1/data/instagram/followers/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `usernames` | string | Yes | An Instagram username (e.g. natgeo) or full profile URL (e.g. https://www.instagram.com/natgeo/) whose followers or following list you want to pull. |
| `dataToScrape` | string | No | Whether to fetch the account's followers or the accounts it follows. |
| `maxResults` | integer | No | Number of profiles to return (50–500,000). Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/instagram/followers/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"usernames":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/instagram/followers/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "usernames": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `username` | Username | text |
| `profileUrl` | Profile URL | url |
| `instagramUserId` | Instagram User ID | text |
| `fullName` | Full Name | text |
| `verified` | Verified | boolean |
| `private` | Private | boolean |
| `profilePicture` | Profile Picture | image |
| `sourceAccount` | Source Account | text |


---

# Instagram Posts & Reels API

Extract Instagram posts and reels — captions, engagement, media, music, and authors — by profile (posts / reels / tagged tabs), post URL, hashtag, or keyword search

**Pricing:** $0.002 per post

**Endpoint:** `POST /v1/data/instagram/posts/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `handles` | string | No | Instagram username (e.g. natgeo) or profile URL to pull posts from. |
| `tab` | string | No | Which profile tab to pull: the posts grid (photos + videos), the Reels tab, or posts the profile is tagged in. |
| `postUrls` | array | No | Instagram post or reel URLs, one per line — returns the full record for each. |
| `hashtags` | string | No | Hashtag to pull recent posts from, without the # (e.g. travel). |
| `query` | string | No | Search keyword — returns matching Reels from Instagram search. |
| `maxPages` | integer | No | Keyword-search result pages to fetch (~10–12 reels per page, capped at 8). |
| `maxResults` | integer | No | Number of posts to return in total. Use 0 for all. |
| `onlyPostsNewerThan` | date | No | Only get posts newer than this date (YYYY-MM-DD). Pinned posts may appear even if older. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/instagram/posts/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/instagram/posts/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `postUrl` | Post URL | url |
| `caption` | Caption | text |
| `type` | Type | text |
| `contentFormat` | Content Format | text |
| `posted` | Posted | text |
| `source` | Source | text |
| `authorUsername` | Author Username | text |
| `authorName` | Author Name | text |
| `authorProfileUrl` | Author Profile URL | url |
| `authorVerified` | Author Verified | boolean |
| `authorId` | Author ID | text |
| `likes` | Likes | number |
| `likesHidden` | Likes Hidden | boolean |
| `comments` | Comments | number |
| `plays` | Plays | number |
| `views` | Views | number |
| `shares` | Shares | number |
| `image` | Image | url |
| `videoUrl` | Video URL | url |
| `carouselImages` | Carousel Images | array |
| `carouselSlideMediaUrls` | Carousel Slide Media/URLs | object_array |
| `durationS` | Duration (s) | number |
| `hashtags` | Hashtags | array |
| `mentions` | Mentions | array |
| `firstComment` | First Comment | text |
| `recentComments` | Recent Comments | object_array |
| `captionLanguage` | Caption Language | text |
| `locationName` | Location Name | text |
| `paidPartnership` | Paid Partnership | boolean |
| `pinned` | Pinned | boolean |
| `song` | Song | text |
| `artist` | Artist | text |
| `originalAudio` | Original Audio | boolean |
| `taggedUsers` | Tagged Users | object_array |
| `coauthors` | Coauthors | object_array |


---

# Instagram Profiles API

Extract Instagram account data — bio, followers, verification, business info, links, and recent posts — by username or keyword search

**Pricing:** $0.002 per profile

**Endpoint:** `POST /v1/data/instagram/profiles/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `usernames` | array | No | Instagram usernames (e.g. natgeo, shopify) or full profile URLs (e.g. https://www.instagram.com/natgeo/) to look up. |
| `query` | string | No | Keyword to search Instagram accounts by (e.g. coffee, nasa). |
| `maxResults` | integer | No | Number of profiles to return. Use 0 for all. Capped at 250. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/instagram/profiles/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/instagram/profiles/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `profileUrl` | Profile URL | url |
| `instagramId` | Instagram ID | text |
| `username` | Username | text |
| `fullName` | Full Name | text |
| `bio` | Bio | text |
| `followers` | Followers | number |
| `following` | Following | number |
| `posts` | Posts | number |
| `verified` | Verified | boolean |
| `private` | Private | boolean |
| `businessAccount` | Business Account | boolean |
| `businessCategory` | Business Category | text |
| `businessStreet` | Business Street | text |
| `businessCity` | Business City | text |
| `businessZip` | Business Zip | text |
| `businessLatitude` | Business Latitude | number |
| `businessLongitude` | Business Longitude | number |
| `businessCityId` | Business City ID | text |
| `bioLinks` | Bio Links | object_array |
| `profilePicture` | Profile Picture | url |
| `highlightReels` | Highlight Reels | number |
| `lastPostDate` | Last Post Date | text |
| `recentPosts` | Recent Posts | object_array |
| `relatedAccounts` | Related Accounts | object_array |
| `facebookPage` | Facebook Page | object |


---

# Instagram Stories API

Extract a public Instagram account's currently-active Stories — media URLs, timestamps, links, music, and poster details — by username

**Pricing:** $0.01 per story

**Endpoint:** `POST /v1/data/instagram/stories/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `usernames` | array | Yes | Instagram usernames (e.g. natgeo, cnn) or full profile URLs (e.g. https://www.instagram.com/natgeo/) whose active Stories you want. Accounts with no live story return no rows. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/instagram/stories/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"usernames":["..."]}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/instagram/stories/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "usernames": [
        "..."
    ]
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `storyId` | Story ID | text |
| `shortcode` | Shortcode | text |
| `username` | Username | text |
| `profileUrl` | Profile URL | url |
| `fullName` | Full Name | text |
| `isVerified` | Is Verified | boolean |
| `mediaType` | Media Type | text |
| `imageUrl` | Image URL | url |
| `videoUrl` | Video URL | url |
| `videoDuration` | Video Duration | number |
| `hasAudio` | Has Audio | boolean |
| `width` | Width | number |
| `height` | Height | number |
| `takenAt` | Taken At | text |
| `expiringAt` | Expiring At | text |
| `isPaidPartnership` | Is Paid Partnership | boolean |
| `linkUrl` | Link URL | url |
| `linkTitle` | Link Title | text |
| `musicTitle` | Music Title | text |
| `musicArtist` | Music Artist | text |
| `posterProfilePic` | Poster Profile Pic | url |


---

# Instamart Category API

Extract Instamart category page listings — products, prices, stock, ratings — from category URLs

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/instamart/category/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `category` | string | Yes | Top-level category (e.g. Cold Drinks & Juices). |
| `sub_category` | string | Yes | Sub-category within it (e.g. Soft Drinks). |
| `store_id` | string | No | Dark store — pick a city and pincode first. |
| `lat` | number | No | Or target by coordinates — latitude (use with longitude). |
| `lon` | number | No | Or target by coordinates — longitude (use with latitude). |
| `city` | string | No | City — filters the pincode and store lists. |
| `pincode` | string | No | Pincode — pick a city first; filters the store list. |
| `maxResults` | integer | No | How many products to return for the category. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/instamart/category/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"category":"...","sub_category":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/instamart/category/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "category": "...",
    "sub_category": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productName` | Product Name | text |
| `brand` | Brand | text |
| `variantId` | Variant ID | text |
| `productId` | Product ID | text |
| `price` | Price | currency |
| `mrp` | MRP | currency |
| `discount` | Discount % | percentage |
| `packSize` | Pack Size | text |
| `inStock` | In Stock | boolean |
| `stockCount` | Stock Count | number |
| `rating` | Rating | rating |
| `ratingCount` | Rating Count | number |
| `category` | Category | text |
| `rank` | Rank | number |
| `sponsored` | Sponsored | boolean |
| `images` | Images | array |
| `productUrl` | Product URL | url |
| `description` | Description | text |
| `countryOfOrigin` | Country of Origin | text |
| `manufacturer` | Manufacturer | text |
| `seller` | Seller | text |
| `specifications` | Specifications | object_array |
| `storeId` | Store ID | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |


---

# Instamart Products API

Extract Instamart product details — MRP, selling price, stock — from product URLs

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/instamart/products/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | Product page URL to scrape. |
| `store_id` | string | No | Dark store — pick a city and pincode first. |
| `lat` | number | No | Or target by coordinates — latitude (use with longitude). |
| `lon` | number | No | Or target by coordinates — longitude (use with latitude). |
| `city` | string | No | City — filters the pincode and store lists. |
| `pincode` | string | No | Pincode — pick a city first; filters the store list. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/instamart/products/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"url":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/instamart/products/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "url": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productName` | Product Name | text |
| `brand` | Brand | text |
| `variantId` | Variant ID | text |
| `productId` | Product ID | text |
| `price` | Price | currency |
| `mrp` | MRP | currency |
| `discount` | Discount % | percentage |
| `packSize` | Pack Size | text |
| `inStock` | In Stock | boolean |
| `stockCount` | Stock Count | number |
| `rating` | Rating | rating |
| `ratingCount` | Rating Count | number |
| `category` | Category | text |
| `rank` | Rank | number |
| `sponsored` | Sponsored | boolean |
| `images` | Images | array |
| `productUrl` | Product URL | url |
| `description` | Description | text |
| `countryOfOrigin` | Country of Origin | text |
| `manufacturer` | Manufacturer | text |
| `seller` | Seller | text |
| `specifications` | Specifications | object_array |
| `storeId` | Store ID | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |


---

# Instamart Search API

Search Instamart by query — listings, prices, stock, ratings, images

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/instamart/search/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | What to search for (e.g. milk, chocolate). |
| `store_id` | string | No | Dark store — pick a city and pincode first. |
| `lat` | number | No | Or target by coordinates — latitude (use with longitude). |
| `lon` | number | No | Or target by coordinates — longitude (use with latitude). |
| `city` | string | No | City — filters the pincode and store lists. |
| `pincode` | string | No | Pincode — pick a city first; filters the store list. |
| `maxResults` | integer | No | How many products to return for the search. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/instamart/search/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"query":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/instamart/search/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "query": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productName` | Product Name | text |
| `brand` | Brand | text |
| `variantId` | Variant ID | text |
| `productId` | Product ID | text |
| `price` | Price | currency |
| `mrp` | MRP | currency |
| `discount` | Discount % | percentage |
| `packSize` | Pack Size | text |
| `inStock` | In Stock | boolean |
| `stockCount` | Stock Count | number |
| `rating` | Rating | rating |
| `ratingCount` | Rating Count | number |
| `category` | Category | text |
| `rank` | Rank | number |
| `sponsored` | Sponsored | boolean |
| `images` | Images | array |
| `productUrl` | Product URL | url |
| `description` | Description | text |
| `countryOfOrigin` | Country of Origin | text |
| `manufacturer` | Manufacturer | text |
| `seller` | Seller | text |
| `specifications` | Specifications | object_array |
| `storeId` | Store ID | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |


---

# LinkedIn Ads API

Extract LinkedIn ad details, ad copy, media URL, and call-to-action buttons from Ad Library URLs

**Pricing:** $0.002 per ad

**Endpoint:** `POST /v1/data/linkedin/ads-library/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | Yes | LinkedIn Ad Library URL (or company URL). |
| `maxResults` | integer | No | Number of ads to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/linkedin/ads-library/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"urls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/linkedin/ads-library/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "urls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `adUrl` | Ad URL | url |
| `adId` | Ad ID | text |
| `advertiserUrl` | Advertiser URL | url |
| `paidBy` | Paid By | text |
| `format` | Format | text |
| `headline` | Headline | text |
| `body` | Body | text |
| `clickUrl` | Click URL | url |
| `started` | Started | text |
| `ended` | Ended | text |
| `daysActive` | Days Active | number |
| `impressions` | Impressions | text |
| `impressionsByCountry` | Impressions By Country | object_array |
| `targetingLocation` | Targeting Location | text |
| `mediaUrl` | Media URL | url |
| `mediaType` | Media Type | text |


---

# LinkedIn Companies API

Get LinkedIn company data — by company URL, or by searching with filters (location, size, industry). Returns the full company profile either way.

**Pricing:** $0.004 per company

**Endpoint:** `POST /v1/data/linkedin/companies/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `companies` | array | No | LinkedIn company URLs to fetch. One per line. |
| `query` | string | No | Keywords to find LinkedIn companies (e.g. 'fintech startup'). |
| `locations` | array | No | Filter to companies in these locations (e.g. 'San Francisco'). One per line. |
| `companySize` | array | No | Filter to companies in this employee-count band. |
| `industries` | array | No | Filter to companies in this industry. |
| `maxResults` | integer | No | Max companies to return (up to 1,000). Ignored when company URLs are passed. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/linkedin/companies/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/linkedin/companies/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `linkedinUrl` | LinkedIn URL | url |
| `companyId` | Company ID | text |
| `companySlug` | Company Slug | text |
| `logo` | Logo | image |
| `companyName` | Company Name | text |
| `tagline` | Tagline | text |
| `description` | Description | text |
| `website` | Website | url |
| `ctaUrl` | CTA URL | url |
| `foundedYear` | Founded Year | number |
| `employeeCount` | Employee Count | number |
| `employeeCountRange` | Employee Count Range | text |
| `followers` | Followers | number |
| `industry` | Industry | text |
| `industryCategory` | Industry Category | text |
| `hqStreet` | HQ Street | text |
| `hqCity` | HQ City | text |
| `hqState` | HQ State | text |
| `hqCountry` | HQ Country | text |
| `hqPostalCode` | HQ Postal Code | text |
| `locations` | Locations | object_array |
| `specialities` | Specialities | array |
| `activeStatus` | Active Status | boolean |
| `pageType` | Page Type | text |
| `jobsUrl` | Jobs URL | url |
| `employeesByLocation` | Employees by Location | object_array |
| `verified` | Verified | boolean |


---

# LinkedIn Company Employees API

List LinkedIn company employees — name, role, location, seniority — from a list of company URLs

**Pricing:** $0.004 per profile

**Endpoint:** `POST /v1/data/linkedin/company-employees/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `companies` | string | Yes | LinkedIn company URL (e.g. https://www.linkedin.com/company/google). |
| `maxResults` | integer | No | Number of employee profiles to return. Use 0 for all. |
| `locations` | array | No | Filter by location (e.g. San Francisco, London). One per line. |
| `jobTitles` | array | No | Filter by current job title (e.g. Software Engineer, Product Manager). One per line. |
| `yearsAtCompany` | array | No | Filter to employees in this tenure band. |
| `yearsOfExperience` | array | No | Filter to employees in this experience band. |
| `companyHeadcount` | array | No | Filter to companies in this employee-count band. |
| `recentlyChangedJobs` | boolean | No | Set to true to only get people who have recently changed jobs. |
| `pastJobTitles` | array | No | Filter by past job title text (e.g. 'engineer'). One per line. |
| `seniorityLevels` | array | No | Filter to employees at this seniority level. |
| `functions` | array | No | Filter to employees in this job function. |
| `industries` | array | No | Filter to employees in this industry. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/linkedin/company-employees/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"companies":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/linkedin/company-employees/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "companies": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `profileUrl` | Profile URL | url |
| `profileId` | Profile ID | text |
| `handle` | Handle | text |
| `firstName` | First Name | text |
| `lastName` | Last Name | text |
| `headline` | Headline | text |
| `about` | About | text |
| `photo` | Photo | url |
| `coverPhoto` | Cover Photo | url |
| `city` | City | text |
| `state` | State | text |
| `country` | Country | text |
| `followers` | Followers | number |
| `connections` | Connections | number |
| `verified` | Verified | text |
| `premium` | Premium | text |
| `influencer` | Influencer | text |
| `openToWork` | Open To Work | text |
| `hiring` | Hiring | text |
| `experience` | Experience | object_array |
| `education` | Education | object_array |
| `certifications` | Certifications | object_array |
| `projects` | Projects | object_array |
| `courses` | Courses | object_array |
| `publications` | Publications | object_array |
| `volunteering` | Volunteering | object_array |
| `receivedRecommendations` | Received Recommendations | object_array |
| `skills` | Skills | object_array |
| `patents` | Patents | object_array |
| `honorsAndAwards` | Honors And Awards | object_array |
| `languages` | Languages | object_array |
| `causes` | Causes | array |


---

# LinkedIn Jobs API

Extract LinkedIn job postings — title, company, location, description, salary, and full company profile — by searching with job titles, location, and filters

**Pricing:** $0.001 per job

**Endpoint:** `POST /v1/data/linkedin/jobs/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `jobTitles` | string | Yes | Job title to search for (e.g. 'product manager'). |
| `maxResults` | integer | No | Jobs to return. Use 0 for all. |
| `locations` | string | No | Filter to jobs in this location. |
| `company` | array | No | Filter to jobs at these companies (e.g. Google, Stripe). One per line. Up to 10 per run. |
| `workplaceType` | array | No | Filter by where the work happens. |
| `employmentType` | array | No | Filter by employment type. |
| `experienceLevel` | array | No | Filter by required experience level. |
| `salary` | array | No | Only jobs paying at least this much (USD). |
| `postedLimit` | string | No | Only jobs posted within this time window. |
| `sortBy` | string | No | Sort order for results. |
| `industryIds` | array | No | Filter by industry. Up to 20 per run. |
| `easyApply` | boolean | No | Only jobs you can apply to with one click on LinkedIn. |
| `under10Applicants` | boolean | No | Only low-competition jobs (<10 applicants so far). |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/linkedin/jobs/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"jobTitles":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/linkedin/jobs/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "jobTitles": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `jobUrl` | Job URL | url |
| `jobId` | Job ID | text |
| `jobTitle` | Job Title | text |
| `description` | Description | text |
| `employmentType` | Employment Type | text |
| `workplaceType` | Workplace Type | text |
| `remoteAllowed` | Remote Allowed | boolean |
| `experienceLevel` | Experience Level | text |
| `applicants` | Applicants | number |
| `posted` | Posted | text |
| `expires` | Expires | text |
| `applyUrl` | Apply URL | url |
| `easyApply` | Easy Apply | text |
| `industries` | Industries | array |
| `salaryMin` | Salary Min | number |
| `salaryMax` | Salary Max | number |
| `salaryCurrency` | Salary Currency | text |
| `salaryPeriod` | Salary Period | text |
| `ats` | ATS | text |
| `benefits` | Benefits | array |
| `recruiterName` | Recruiter Name | text |
| `recruiterUrl` | Recruiter URL | url |
| `city` | City | text |
| `state` | State | text |
| `country` | Country | text |
| `companyName` | Company Name | text |
| `companyId` | Company ID | text |
| `companySlug` | Company Slug | text |
| `companyUrl` | Company URL | url |
| `companyLogo` | Company Logo | image |
| `companyWebsite` | Company Website | url |
| `companyEmployees` | Company Employees | number |
| `companyFollowers` | Company Followers | number |


---

# LinkedIn Post Comments API

Extract LinkedIn post comments and replies, including likes and reactions, from a list of post URLs

**Pricing:** $0.002 per comment

**Endpoint:** `POST /v1/data/linkedin/post-comments/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `posts` | string | Yes | LinkedIn post URL to scrape comments from. |
| `maxResults` | integer | No | Number of comments to return. Use 0 for all. |
| `postedLimit` | string | No | Only comments within this time window. |
| `includeReplies` | boolean | No | Also fetch replies to each top-level comment. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/linkedin/post-comments/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"posts":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/linkedin/post-comments/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "posts": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `commenterName` | Commenter Name | text |
| `commenterHeadline` | Commenter Headline | text |
| `commenterUrl` | Commenter URL | url |
| `commenterProfileId` | Commenter Profile ID | text |
| `commenterHandle` | Commenter Handle | text |
| `commenterPhoto` | Commenter Photo | image |
| `commenterType` | Commenter Type | text |
| `commenterFollowers` | Commenter Followers | number |
| `isAuthor` | Is Author | boolean |
| `comment` | Comment | text |
| `commentUrl` | Comment URL | url |
| `commentedAt` | Commented At | text |
| `commentReactions` | Comment Reactions | object_array |
| `commentId` | Comment ID | text |
| `mentions` | Mentions | object_array |
| `postUrl` | Post URL | url |


---

# LinkedIn Post Reactions API

Extract reactions from LinkedIn posts and comments, providing likes and appreciations

**Pricing:** $0.002 per reaction

**Endpoint:** `POST /v1/data/linkedin/post-reactions/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `posts` | string | Yes | LinkedIn post URL to scrape reactions from. |
| `maxResults` | integer | No | Number of reactions to return. Use 0 for all. |
| `reactionTypeFilter` | array | No | Filter to specific reaction types. Leave empty for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/linkedin/post-reactions/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"posts":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/linkedin/post-reactions/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "posts": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `reactorName` | Reactor Name | text |
| `reactorUrl` | Reactor URL | url |
| `reactorProfileId` | Reactor Profile ID | text |
| `reactorHandle` | Reactor Handle | text |
| `reactorHeadline` | Reactor Headline | text |
| `reactorPhoto` | Reactor Photo | image |
| `reactorLocation` | Reactor Location | text |
| `reactionType` | Reaction Type | text |
| `postUrl` | Post URL | url |
| `postUrn` | Post URN | text |


---

# LinkedIn Posts API

Get LinkedIn posts — from any profile, company, post, or feed URL, or by searching with author / mention / content-type filters. Returns the same clean post record either way.

**Pricing:** $0.002 per post

**Endpoint:** `POST /v1/data/linkedin/posts/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | No | LinkedIn URL to scrape posts from — profile, company, post, or feed links. |
| `queries` | string | No | Keyword to search LinkedIn posts for. |
| `maxResults` | integer | No | Posts to return. Use 0 for all. |
| `postedLimit` | string | No | Only posts within this time window. |
| `includeQuotePosts` | boolean | No | Quote posts (shared with commentary). |
| `includeReposts` | boolean | No | Reposts (shared without commentary). |
| `sortBy` | string | No | Sort order for results. |
| `authors` | array | No | Filter posts to specific authors. Accepts profile URLs or company names ('Google'). |
| `mentioning` | array | No | Filter posts that mention specific people or companies. Accepts profile URLs or names. |
| `contentType` | string | No | Filter to a specific media type. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/linkedin/posts/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/linkedin/posts/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `postUrl` | Post URL | url |
| `postId` | Post ID | text |
| `postText` | Post Text | text |
| `authorName` | Author Name | text |
| `authorUrl` | Author URL | url |
| `authorProfileId` | Author Profile ID | text |
| `authorHandle` | Author Handle | text |
| `authorAvatar` | Author Avatar | image |
| `authorType` | Author Type | text |
| `authorHeadline` | Author Headline | text |
| `authorFollowers` | Author Followers | number |
| `reactions` | Reactions | number |
| `comments` | Comments | number |
| `shares` | Shares | number |
| `postedDate` | Posted Date | text |
| `repostNote` | Repost Note | text |
| `articleUrl` | Article URL | url |
| `postMediaUrl` | Post Media URL | url |
| `postMediaType` | Post Media Type | text |
| `mentions` | Mentions | object_array |


---

# LinkedIn Profile Comments API

Extract LinkedIn profile comments and their social activities like likes and reactions, requiring no input

**Pricing:** $0.002 per comment

**Endpoint:** `POST /v1/data/linkedin/profile-comments/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `profiles` | string | Yes | LinkedIn profile URL to scrape comments from. |
| `maxResults` | integer | No | Number of comments to return. Use 0 for all. |
| `postedLimit` | string | No | Only comments within this time window. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/linkedin/profile-comments/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"profiles":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/linkedin/profile-comments/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "profiles": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `comment` | Comment | text |
| `commentUrl` | Comment URL | url |
| `commentId` | Comment ID | text |
| `commentedAt` | Commented At | text |
| `edited` | Edited | boolean |
| `isReply` | Is Reply | text |
| `mentions` | Mentions | object_array |
| `commentReactions` | Comment Reactions | object_array |
| `commentReplies` | Comment Replies | number |
| `commenterUrl` | Commenter URL | url |
| `onOwnPost` | On Own Post | boolean |
| `postUrl` | Post URL | url |
| `postId` | Post ID | text |
| `postText` | Post Text | text |
| `postAuthor` | Post Author | text |
| `postAuthorUrl` | Post Author URL | url |
| `postAuthorProfileId` | Post Author Profile ID | text |
| `postAuthorHandle` | Post Author Handle | text |
| `postAuthorType` | Post Author Type | text |
| `postAuthorHeadline` | Post Author Headline | text |
| `postAuthorAvatar` | Post Author Avatar | image |
| `postDate` | Post Date | text |
| `postMediaUrl` | Post Media URL | url |
| `postMediaType` | Post Media Type | text |
| `postReactions` | Post Reactions | number |
| `postComments` | Post Comments | number |
| `postShares` | Post Shares | number |


---

# LinkedIn Profile Reactions API

Monitor public LinkedIn profiles for reactions, along with full post details and social activities

**Pricing:** $0.002 per reaction

**Endpoint:** `POST /v1/data/linkedin/profile-reactions/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `profiles` | string | Yes | LinkedIn profile URL to scrape reactions from. |
| `maxResults` | integer | No | Number of reactions to return. Use 0 for all. |
| `postedLimit` | string | No | Only reactions within this time window. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/linkedin/profile-reactions/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"profiles":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/linkedin/profile-reactions/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "profiles": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `reaction` | Reaction | text |
| `reactorUrl` | Reactor URL | url |
| `reactorProfileId` | Reactor Profile ID | text |
| `reactedAt` | Reacted At | text |
| `postUrl` | Post URL | url |
| `postId` | Post ID | text |
| `postText` | Post Text | text |
| `postAuthor` | Post Author | text |
| `postAuthorUrl` | Post Author URL | url |
| `postAuthorProfileId` | Post Author Profile ID | text |
| `postAuthorHandle` | Post Author Handle | text |
| `postAuthorType` | Post Author Type | text |
| `postAuthorHeadline` | Post Author Headline | text |
| `postDate` | Post Date | text |
| `postMediaUrl` | Post Media URL | url |
| `postMediaType` | Post Media Type | text |
| `postReactions` | Post Reactions | number |
| `postComments` | Post Comments | number |
| `postShares` | Post Shares | number |


---

# LinkedIn Profiles API

Get complete LinkedIn profiles — headline, about, full work experience, education, skills, certifications, and more. No LinkedIn login required. Two ways in: By URL enriches profile URLs you already have; By Search finds people by keyword plus rich filters (title, company, school, seniority, industry, location) and returns the SAME fully-enriched profiles.

**Pricing:** $0.004 per profile

**Endpoint:** `POST /v1/data/linkedin/profiles/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `queries` | array | No | LinkedIn profile URLs to fetch full details for (By URL mode). One per line. |
| `searchQuery` | string | No | By Search mode: keyword full-text search only — a single domain/role keyword (e.g. 'fintech', 'founder', 'product manager'). Do NOT include years, school names, company names, or job titles here — use the structured filters for those. |
| `maxProfiles` | integer | No | By Search mode: how many matching profiles to enrich, as a multiple of 25 (each search page holds up to 25 profiles). Billed as $0.10 per search page pulled PLUS $0.004 per enriched profile. Leave blank for ALL available matches (up to 2500 / 100 pages). |
| `locations` | array | No | By Search: filter to profiles in these locations (e.g. 'San Francisco', 'London'). One per line. Up to 70 per run. |
| `seniorityLevel` | array | No | By Search: filter to profiles at this seniority level. |
| `function` | array | No | By Search: filter to profiles in this job function. |
| `industry` | array | No | By Search: filter to profiles in this industry. Up to 50 per run. |
| `yearsOfExperience` | array | No | By Search: filter by total career experience. Also the proxy for graduation year: '1' = <1y (just graduated), '2' = 1-2y, '3' = 3-5y, '4' = 6-10y, '5' = >10y. |
| `yearsAtCompany` | array | No | By Search: filter to profiles with this tenure at their current company. |
| `companyHeadcount` | array | No | By Search: filter to profiles working at companies of this size. |
| `currentCompanies` | array | No | By Search: filter to profiles currently at these companies (e.g. Google, Stripe). One per line. Up to 50 per run. |
| `pastCompanies` | array | No | By Search: filter to profiles who previously worked at these companies. One per line. Up to 50 per run. |
| `currentJobTitles` | array | No | By Search: filter by current job title text (e.g. 'product manager'). One per line. Up to 50 per run. |
| `pastJobTitles` | array | No | By Search: filter by past job title text. One per line. Up to 50 per run. |
| `schools` | array | No | By Search: filter to alumni of these schools (e.g. Stanford, MIT). One per line. Up to 50 per run. |
| `names` | array | No | By Search: filter to profiles by name. One per line — full name ("Sam Altman") or first/last only ("Sam"). Up to 50 per run. |
| `companyHQLocations` | array | No | By Search: filter to profiles whose company is headquartered in these locations. One per line. Up to 70 per run. |
| `profileLanguages` | array | No | By Search: filter to profiles written in these LinkedIn profile languages. |
| `recentlyChangedJobs` | boolean | No | By Search: only profiles who recently changed jobs. |
| `recentlyPostedOnLinkedIn` | boolean | No | By Search: only profiles who posted on LinkedIn recently. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/linkedin/profiles/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/linkedin/profiles/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `profileUrl` | Profile URL | url |
| `handle` | Handle | text |
| `profileId` | Profile ID | text |
| `firstName` | First Name | text |
| `lastName` | Last Name | text |
| `headline` | Headline | text |
| `about` | About | text |
| `photo` | Photo | url |
| `coverPhoto` | Cover Photo | url |
| `city` | City | text |
| `state` | State | text |
| `country` | Country | text |
| `followers` | Followers | number |
| `connections` | Connections | number |
| `verified` | Verified | text |
| `premium` | Premium | text |
| `influencer` | Influencer | text |
| `openToWork` | Open To Work | text |
| `openProfile` | Open Profile | text |
| `hiring` | Hiring | text |
| `creator` | Creator | text |
| `experience` | Experience | object_array |
| `education` | Education | object_array |
| `certifications` | Certifications | object_array |
| `projects` | Projects | object_array |
| `courses` | Courses | object_array |
| `publications` | Publications | object_array |
| `volunteering` | Volunteering | object_array |
| `receivedRecommendations` | Received Recommendations | object_array |
| `skills` | Skills | object_array |
| `patents` | Patents | object_array |
| `honorsAndAwards` | Honors And Awards | object_array |
| `languages` | Languages | object_array |
| `causes` | Causes | array |


---

# Naukri Jobs API

Pull details for a specified number of Naukri job postings, including title, company, and experience

**Pricing:** $0.002 per job

**Endpoint:** `POST /v1/data/naukri/job/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `inputs` | string | Yes | A search keyword (e.g. 'software developer') or a Naukri search URL to scrape job listings from. |
| `maxResults` | integer | No | Number of jobs to return (minimum 50). Use 0 for all. |
| `freshness` | string | No | Filter to recently-posted jobs. |
| `sortBy` | string | No | Sort order for results. |
| `experience` | string | No | Required years of experience. |
| `workMode` | array | No | Filter by work arrangement. |
| `department` | array | No | Filter by department. |
| `salaryRange` | array | No | Filter by salary band (Indian Lakhs per Annum). |
| `companyType` | array | No | Filter by company type. |
| `roleCategory` | array | No | Filter by job role. |
| `industry` | array | No | Filter by industry. |
| `topCompanies` | array | No | Filter to specific top companies. |
| `postedBy` | array | No | Filter by who posted the listing. |
| `stipend` | array | No | Internship stipend range. |
| `duration` | array | No | Internship duration. |
| `ugCourse` | array | No | Required undergraduate course. |
| `pgCourse` | array | No | Required postgraduate course. |
| `cities` | array | No | Filter results to specific cities. |
| `fetchDetails` | boolean | No | Pull full job description, requirements, etc. for each result. Slower but richer data. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/naukri/job/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"inputs":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/naukri/job/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "inputs": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `jobUrl` | Job URL | url |
| `jobId` | Job ID | text |
| `jobTitle` | Job Title | text |
| `company` | Company | text |
| `companyId` | Company ID | text |
| `location` | Location | text |
| `minExperienceYrs` | Min Experience (Yrs) | number |
| `maxExperienceYrs` | Max Experience (Yrs) | number |
| `salaryMin` | Salary Min | currency |
| `salaryMax` | Salary Max | currency |
| `skills` | Skills | text |
| `description` | Description | text |
| `requirementsSummary` | Requirements Summary | text |
| `jobType` | Job Type | text |
| `posted` | Posted | text |
| `vacancies` | Vacancies | number |
| `views` | Views | number |
| `applicants` | Applicants | number |
| `applyUrl` | Apply URL | url |
| `appliesOnCompanySite` | Applies On Company Site | boolean |
| `hasQuestionnaire` | Has Questionnaire | boolean |
| `workplaceType` | Workplace Type | text |
| `hybridDetail` | Hybrid Detail | text |
| `industry` | Industry | text |
| `department` | Department | text |
| `roleCategory` | Role Category | text |
| `role` | Role | text |
| `educationUg` | Education UG | text |
| `educationPg` | Education PG | text |
| `listingSource` | Listing Source | text |
| `postedByConsultant` | Posted By Consultant | boolean |
| `hiringFor` | Hiring For | text |
| `companyDetails` | Company Details | object |
| `benchmarkRole` | Benchmark Role | text |
| `benchmarkMinCtcLakhs` | Benchmark Min CTC (Lakhs) | number |
| `benchmarkAvgCtcLakhs` | Benchmark Avg CTC (Lakhs) | number |
| `benchmarkMaxCtcLakhs` | Benchmark Max CTC (Lakhs) | number |
| `benchmarkSalariesUrl` | Benchmark Salaries URL | url |
| `benefits` | Benefits | text |
| `employeeReviews` | Employee Reviews | object_array |
| `diversityTags` | Diversity Tags | text |
| `walkInJob` | Walk-In Job | boolean |
| `walkInVenue` | Walk-In Venue | text |
| `walkInStart` | Walk-In Start | text |
| `walkInEnd` | Walk-In End | text |
| `walkInTiming` | Walk-In Timing | text |
| `walkInContact` | Walk-In Contact | text |
| `walkInPhone` | Walk-In Phone | text |
| `referenceCode` | Reference Code | text |
| `internshipDuration` | Internship Duration | text |


---

# Reddit Comments API

Extract every comment from a Reddit post — the full threaded discussion flattened to one row per comment, at any reply depth.

**Pricing:** $0.0001 per result

**Endpoint:** `POST /v1/data/reddit/comments/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `inputs` | string | Yes | Reddit post URL to fetch comments from (e.g. https://www.reddit.com/r/technology/comments/1ub7r1y/...). |
| `maxResults` | integer | No | Number of comments to return. Use 0 for all. |
| `includeComments` | boolean | No | Fetch the comment tree for each post. On by default for this agent. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/reddit/comments/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"inputs":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/reddit/comments/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "inputs": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `commentUrl` | Comment URL | url |
| `commentId` | Comment ID | text |
| `comment` | Comment | text |
| `depth` | Depth | number |
| `author` | Author | text |
| `authorFlair` | Author Flair | text |
| `isOp` | Is OP | boolean |
| `upvotes` | Upvotes | number |
| `posted` | Posted | text |
| `edited` | Edited | text |
| `parentId` | Parent ID | text |
| `postId` | Post ID | text |
| `postUrl` | Post URL | url |
| `post` | Post | object |
| `subreddit` | Subreddit | text |


---

# Reddit Posts API

Extract Reddit posts from any subreddit, post, user, or feed — with an optional keyword search on top. Posts only (no comment tree).

**Pricing:** $0.0001 per result

**Endpoint:** `POST /v1/data/reddit/posts/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | No | Reddit URL to scrape posts from. Accepts a subreddit (r/technology or the full URL), a post link, a user profile, or a listing feed. |
| `keyword` | string | No | Optional. A keyword to search Reddit posts for (e.g. 'gpt5'). Use on its own, or add it alongside the URLs above — both run together. |
| `maxResults` | integer | No | Number of posts to return. Use 0 for all. |
| `sortBy` | string | No | Sort order for posts. |
| `timeRange` | string | No | Time window for posts. Only applies when Sort By is "Top" — Reddit ignores it for the other sorts. (Preset windows only; no custom date ranges.) |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/reddit/posts/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/reddit/posts/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `type` | Type | text |
| `redditUrl` | Reddit URL | url |
| `redditId` | Reddit ID | text |
| `title` | Title | text |
| `body` | Body | text |
| `subreddit` | Subreddit | text |
| `flair` | Flair | text |
| `author` | Author | text |
| `authorFlair` | Author Flair | text |
| `upvotes` | Upvotes | number |
| `upvoteRatio` | Upvote Ratio | number |
| `commentCount` | Comment Count | number |
| `gallery` | Gallery | image |
| `externalLink` | External Link | url |
| `over18` | Over 18 | boolean |
| `posted` | Posted | text |
| `edited` | Edited | text |


---

# Shopify Products API

Extract product data — prices, variants, images, descriptions — from any Shopify-powered store URL

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/shopify/products/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | Yes | Shopify store URL to crawl all products from, or an individual product URL. |
| `maxResults` | integer | No | Number of products to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/shopify/products/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"urls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/shopify/products/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "urls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `storeUrl` | Store URL | url |
| `productUrl` | Product URL | url |
| `productId` | Product ID | text |
| `title` | Title | text |
| `brand` | Brand | text |
| `category` | Category | text |
| `description` | Description | text |
| `tags` | Tags | array |
| `currency` | Currency | text |
| `priceFrom` | Price From | number |
| `priceTo` | Price To | number |
| `onSale` | On Sale | boolean |
| `inStock` | In Stock | boolean |
| `variantCount` | Variant Count | integer |
| `variants` | Variants | object_array |
| `options` | Options | object |
| `imageUrl` | Image URL | url |
| `media` | Media | object_array |
| `createdDate` | Created Date | date |
| `publishedDate` | Published Date | date |
| `recommendedProducts` | Recommended Products | object_array |


---

# StockX Products API

Full StockX product detail with live market data — every size, its ask, bid and last sale — one row per product, from a brand page, a search or a product URL.

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/stockx/products/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `listing_url` | string | No | A StockX listing page URL — a brand page (https://stockx.com/brands/adidas) or a search results page (https://stockx.com/search?s=jordan%201). Brand pages also carry the 12-month market statistics; search pages do not. |
| `query` | string | No | A keyword to search StockX for, e.g. 'jordan 1 chicago'. We build the search URL for you — no need to paste one. Relevance-ranked, so it drops roughly 30-40% of a brand; use a brand page as the Listing URL for a full catalog. |
| `urls` | array | No | One or more StockX product URLs, e.g. https://stockx.com/air-jordan-1-retro-high-og-chicago-reimagined-lost-and-found. One per line. |
| `maxResults` | integer | No | Number of products to return from a brand page or a search. Use 0 for all. Ignored when you pass product URLs. |
| `country_code` | string | No | Shopping region. Scopes the StockX market the asks and bids come from. Prices are quoted in USD regardless. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/stockx/products/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/stockx/products/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productId` | Product ID | text |
| `productUrl` | Product URL | url |
| `primaryTitle` | Primary Title | text |
| `secondaryTitle` | Secondary Title | text |
| `brand` | Brand | text |
| `model` | Model | text |
| `colorway` | Colorway | text |
| `styleId` | Style ID | text |
| `category` | Category | text |
| `subCategory` | Sub Category | text |
| `categoryPath` | Category Path | text |
| `contentGroup` | Content Group | text |
| `gender` | Gender | text |
| `condition` | Condition | text |
| `sizeConvention` | Size Convention | text |
| `retailPrice` | Retail Price | number |
| `releaseDate` | Release Date | date |
| `description` | Description | text |
| `tags` | Tags | array |
| `lastSale` | Last Sale | number |
| `sales72Hours` | Sales (72 Hours) | number |
| `averagePrice90Days` | Average Price (90 Days) | number |
| `sales90Days` | Sales (90 Days) | number |
| `priceVolatility` | Price Volatility | number |
| `sales12Months` | Sales (12 Months) | number |
| `averagePrice12Months` | Average Price (12 Months) | number |
| `bids` | Bids | number |
| `askInventoryType` | Ask Inventory Type | text |
| `expressAskCount` | Express Ask Count | number |
| `expressShipLowestAsk` | Express Ship Lowest Ask | number |
| `expressDeliveryDate` | Express Delivery Date | text |
| `expressLatestDeliveryDate` | Express Latest Delivery Date | text |
| `images` | Images | array |
| `sizes` | Sizes | object_array |
| `attributes` | Attributes | object_array |


---

# TikTok Comments API

Extract top-level comments from TikTok videos — comment text, likes, reply counts, commenter handle and profile, timestamps, and mentions — from video URLs or by profile.

**Pricing:** $0.0005 per comment

**Endpoint:** `POST /v1/data/tiktok/comments/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `postURLs` | string | No | TikTok video URL to get comments from. E.g. https://www.tiktok.com/@username/video/1234567890. |
| `profiles` | string | No | TikTok username whose videos' comments you want (with or without @). The actor pulls comments from the profile's videos — use Videos Per Profile to control how many. |
| `commentsPerPost` | integer | No | Number of comments to return. Use 0 for all. Actual counts can vary on very high-comment videos due to TikTok API limits. |
| `topLevelCommentsPerPost` | integer | No | Optional cap on top-level (non-reply) comments per video. |
| `resultsPerPage` | integer | No | By Profile mode only. Number of videos to pull comments from per profile. |
| `profileScrapeSections` | array | No | By Profile mode only. Which sections to pull videos from. |
| `profileSorting` | string | No | By Profile mode only. Order videos by latest, most popular, or oldest. |
| `excludePinnedPosts` | boolean | No | By Profile mode only. Skip pinned videos at the top of a profile. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/tiktok/comments/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/tiktok/comments/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `commentId` | Comment ID | text |
| `commenterUrl` | Commenter URL | url |
| `commenterId` | Commenter ID | text |
| `commenterAvatar` | Commenter Avatar | image |
| `comment` | Comment | text |
| `likes` | Likes | number |
| `likedByCreator` | Liked By Creator | text |
| `pinnedByCreator` | Pinned By Creator | text |
| `replies` | Replies | number |
| `postedDate` | Posted Date | date |
| `mentions` | Mentions | array |
| `postUrl` | Post URL | url |


---

# TikTok Followers & Following API

Pull the follower or following list of any public TikTok account — each row is a full profile (handle, name, followers, likes, videos, verified, bio) of someone connected to the queried account.

**Pricing:** $0.001 per profile

**Endpoint:** `POST /v1/data/tiktok/followers/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `profiles` | string | Yes | TikTok username or handle whose followers/following you want (with or without @). |
| `maxFollowersPerProfile` | integer | No | Number of followers to return (accounts that follow the target). Leave blank for all. |
| `maxFollowingPerProfile` | integer | No | Number of following to return (accounts the target follows). Set to 0 to skip following. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/tiktok/followers/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"profiles":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/tiktok/followers/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "profiles": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `profileUrl` | Profile URL | url |
| `handle` | Handle | text |
| `displayName` | Display Name | text |
| `connectionType` | Connection Type | text |
| `connectedAccount` | Connected Account | url |
| `bio` | Bio | text |
| `followers` | Followers | number |
| `following` | Following | number |
| `totalLikes` | Total Likes | number |
| `videos` | Videos | number |
| `verified` | Verified | boolean |
| `private` | Private | boolean |
| `tiktokSeller` | TikTok Seller | boolean |
| `avatar` | Avatar | image |
| `userId` | User ID | text |


---

# TikTok Posts API

Scrape TikTok videos and photo posts by profile, hashtag, keyword, post URL, or sound — with full engagement metrics, author stats, hashtags, mentions, and music.

**Pricing:** $0.002 per post

**Endpoint:** `POST /v1/data/tiktok/posts/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `profiles` | string | No | TikTok username or handle to scrape posts from (with or without @). |
| `hashtags` | string | No | Hashtag name to scrape posts for (without #). |
| `searchQueries` | string | No | Free-text search query to find matching TikTok posts. |
| `postURLs` | array | No | Direct TikTok video or post URLs to scrape, one per element. |
| `musics` | string | No | TikTok music or sound page URL — returns posts that use this sound. |
| `resultsPerPage` | integer | No | Number of posts to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/tiktok/posts/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/tiktok/posts/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `postUrl` | Post URL | url |
| `author` | Author | object |
| `caption` | Caption | text |
| `postedDate` | Posted Date | date |
| `views` | Views | number |
| `likes` | Likes | number |
| `comments` | Comments | number |
| `shares` | Shares | number |
| `saves` | Saves | number |
| `language` | Language | text |
| `isSlideshow` | Is Slideshow | boolean |
| `isAd` | Is Ad | boolean |
| `isSponsored` | Is Sponsored | boolean |
| `hashtags` | Hashtags | object_array |
| `mentions` | Mentions | object_array |
| `effects` | Effects | object_array |
| `slideshowImages` | Slideshow Images | object_array |
| `photoSlideshowImageUrls` | Photo/Slideshow Image URLs | array |
| `thumbnail` | Thumbnail | image |
| `durationS` | Duration (s) | number |
| `resolution` | Resolution | text |
| `sound` | Sound | object |
| `location` | Location | text |
| `locationAddress` | Location Address | text |
| `country` | Country | text |
| `hashtagViews` | Hashtag Views | number |
| `sourceQuery` | Source Query | text |


---

# TikTok Profiles API

Find TikTok accounts by keyword — handle, display name, bio, follower and engagement counts, verification, and business/seller info.

**Pricing:** $0.0025 per profile

**Endpoint:** `POST /v1/data/tiktok/profiles/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `searchQueries` | string | Yes | Keyword to find TikTok accounts (e.g. nasa, gymshark, cooking recipes). Any query that works in TikTok search is accepted. |
| `maxProfilesPerQuery` | integer | No | Number of profiles to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/tiktok/profiles/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"searchQueries":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/tiktok/profiles/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "searchQueries": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `profileUrl` | Profile URL | url |
| `handle` | Handle | text |
| `displayName` | Display Name | text |
| `avatar` | Avatar | image |
| `bio` | Bio | text |
| `bioLink` | Bio Link | url |
| `verified` | Verified | boolean |
| `followers` | Followers | number |
| `following` | Following | number |
| `mutualFollows` | Mutual Follows | number |
| `totalLikes` | Total Likes | number |
| `likesGiven` | Likes Given | number |
| `videos` | Videos | number |
| `businessAccount` | Business Account | boolean |
| `businessCategory` | Business Category | text |
| `tiktokSeller` | TikTok Seller | boolean |
| `private` | Private | boolean |
| `accountCreated` | Account Created | date |
| `tiktokId` | TikTok ID | text |


---

# TikTok Shop API

Search TikTok Shop by keyword and extract product listings — title, price, discount, seller, rating, sold count, promo labels, full description, and every variant with its stock and inventory.

**Pricing:** $0.015 per product

**Endpoint:** `POST /v1/data/tiktok/shop/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `keywords` | string | Yes | Product search query to run on TikTok Shop (e.g. phone case, wireless earbuds). |
| `productsPerSearch` | integer | No | Number of products to return. Use 0 for all. Capped at 10,000 per search. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/tiktok/shop/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"keywords":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/tiktok/shop/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "keywords": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `title` | Title | text |
| `productUrl` | Product URL | url |
| `image` | Image | image |
| `seller` | Seller | object |
| `salePrice` | Sale Price | number |
| `originalPrice` | Original Price | number |
| `discount` | Discount % | number |
| `currency` | Currency | text |
| `rating` | Rating | number |
| `reviewCount` | Review Count | number |
| `soldCount` | Sold Count | number |
| `labels` | Labels | array |
| `description` | Description | text |
| `variants` | Variants | object_array |
| `productId` | Product ID | text |


---

# TripAdvisor Attractions API

Extract TripAdvisor attraction (things to do) listings: contact details, full address, geo coordinates, rating with breakdown, league ranking, attraction types, Viator booking links, bookable ticket offers, and photos.

**Pricing:** $0.002 per attraction

**Endpoint:** `POST /v1/data/tripadvisor/attractions/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | No | A location name or keyword to search, e.g. 'Rome' or 'Colosseum'. Use English place names for best coverage. (By Search mode.) |
| `startUrls` | string | No | A TripAdvisor search or attraction page URL to extract attractions from. (By URL mode.) |
| `maxResults` | integer | No | Number of attractions to return. Use 0 for all. |
| `language` | string | No | Language for the listing data. |
| `currency` | string | No | Currency for prices. |
| `includeTags` | boolean | No | Pull review category tags (e.g. "Family-friendly", "Hidden gem"). |
| `maxPhotosPerPlace` | integer | No | Photos to fetch per attraction. Use 0 for none. Billed as an add-on per delivered photo. |
| `photosType` | string | No | Which photo source to pull from. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/tripadvisor/attractions/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/tripadvisor/attractions/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `id` | ID | text |
| `name` | Name | text |
| `subcategories` | Subcategories | array |
| `tripadvisorUrl` | TripAdvisor URL | url |
| `description` | Description | text |
| `address` | Address | object |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |
| `nearestMetroStations` | Nearest Metro Stations | object_array |
| `phone` | Phone | phone |
| `email` | Email | email |
| `website` | Website | url |
| `rating` | Rating | rating |
| `reviews` | Reviews | number |
| `ratingBreakdown` | Rating Breakdown | object |
| `reviewTags` | Review Tags | object_array |
| `rank` | Rank | number |
| `rankOutOf` | Rank Out Of | number |
| `photos` | Photos | array |
| `photoCount` | Photo Count | number |
| `attractionTypes` | Attraction Types | array |
| `bookingUrl` | Booking URL | url |
| `lowestTicketPrice` | Lowest Ticket Price | text |
| `ticketOffers` | Ticket Offers | object_array |


---

# TripAdvisor Hotels API

Extract TripAdvisor hotel listings: contact details, full address, geo coordinates, star rating with breakdown, league ranking, hotel class, room count, amenities, price range, OTA price offers, room tips, and photos.

**Pricing:** $0.002 per hotel

**Endpoint:** `POST /v1/data/tripadvisor/hotels/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | No | A location name or keyword to search, e.g. 'Paris' or 'Lisbon hotels'. Use English place names for best coverage. (By Search mode.) |
| `startUrls` | string | No | A TripAdvisor search results page or hotel page URL to extract hotels from. (By URL mode.) |
| `maxResults` | integer | No | Number of hotels to return. Use 0 for all. |
| `language` | string | No | Language for the listing data. |
| `currency` | string | No | Currency for prices. |
| `includeTags` | boolean | No | Pull review category tags (e.g. "Family-friendly", "Romantic"). |
| `checkInDate` | date | No | Check-in date for room pricing and offers. |
| `checkOutDate` | date | No | Check-out date for room pricing and offers. |
| `maxPhotosPerPlace` | integer | No | Photos to fetch per hotel. Use 0 for none. Billed as an add-on per delivered photo. |
| `photosType` | string | No | Which photo source to pull from. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/tripadvisor/hotels/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/tripadvisor/hotels/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `id` | ID | text |
| `name` | Name | text |
| `subcategories` | Subcategories | array |
| `tripadvisorUrl` | TripAdvisor URL | url |
| `description` | Description | text |
| `address` | Address | object |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |
| `nearbyTransit` | Nearby Transit | object_array |
| `phone` | Phone | phone |
| `email` | Email | email |
| `website` | Website | url |
| `rating` | Rating | rating |
| `reviews` | Reviews | number |
| `ratingBreakdown` | Rating Breakdown | object |
| `reviewTags` | Review Tags | object_array |
| `categoryRatingBreakdown` | Category Rating Breakdown | object_array |
| `rank` | Rank | number |
| `rankOutOf` | Rank Out Of | number |
| `photos` | Photos | array |
| `photoCount` | Photo Count | number |
| `hotelClass` | Hotel Class | text |
| `rooms` | Rooms | number |
| `priceRange` | Price Range | text |
| `priceLevel` | Price Level | text |
| `amenities` | Amenities | array |
| `hotelOffers` | Hotel Offers | object_array |
| `roomTips` | Room Tips | object_array |


---

# TripAdvisor Restaurants API

Extract TripAdvisor restaurant listings: contact details, full address, geo coordinates, rating with breakdown, league ranking, cuisines, dishes, meal types, dietary options, features, opening hours, menu and order-online links, price level, and photos.

**Pricing:** $0.002 per restaurant

**Endpoint:** `POST /v1/data/tripadvisor/restaurants/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | No | A location name or keyword to search, e.g. 'Paris' or 'Rome restaurants'. Use English place names for best coverage. (By Search mode.) |
| `startUrls` | string | No | A TripAdvisor search or restaurant page URL to extract listings from. (By URL mode.) |
| `maxResults` | integer | No | Number of restaurants to return. Use 0 for all. |
| `language` | string | No | Language for the listing data. |
| `currency` | string | No | Currency for prices. |
| `includeTags` | boolean | No | Pull review category tags (e.g. "Romantic", "Special occasion"). |
| `maxPhotosPerPlace` | integer | No | Photos to fetch per restaurant. Use 0 for none. Billed as an add-on per delivered photo. |
| `photosType` | string | No | Which photo source to pull from. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/tripadvisor/restaurants/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/tripadvisor/restaurants/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `id` | ID | text |
| `name` | Name | text |
| `type` | Type | text |
| `subcategories` | Subcategories | array |
| `tripadvisorUrl` | TripAdvisor URL | url |
| `description` | Description | text |
| `address` | Address | object |
| `neighborhood` | Neighborhood | object_array |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |
| `phone` | Phone | phone |
| `email` | Email | email |
| `website` | Website | url |
| `rating` | Rating | rating |
| `reviews` | Reviews | number |
| `ratingBreakdown` | Rating Breakdown | object |
| `categoryRatings` | Category Ratings | object_array |
| `reviewTags` | Review Tags | object_array |
| `rank` | Rank | number |
| `rankOutOf` | Rank Out Of | number |
| `photos` | Photos | array |
| `photoCount` | Photo Count | number |
| `cuisines` | Cuisines | array |
| `popularDishes` | Popular Dishes | array |
| `mealTypes` | Meal Types | array |
| `dietaryRestrictions` | Dietary Restrictions | array |
| `features` | Features | array |
| `establishmentTypes` | Establishment Types | array |
| `priceLevel` | Price Level | text |
| `openingHours` | Opening Hours | object_array |
| `timezone` | Timezone | text |
| `menuUrl` | Menu URL | url |
| `orderOnline` | Order Online | object_array |
| `closed` | Closed | text |


---

# TripAdvisor Reviews API

Extract Tripadvisor reviews for specified places, with text, rating, dates, reviewer, owner responses, and place details

**Pricing:** $0.002 per review

**Endpoint:** `POST /v1/data/tripadvisor/reviews/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | Yes | TripAdvisor URL of the place to scrape reviews from. |
| `maxResults` | integer | No | Number of reviews to return. Use 0 for all. |
| `lastReviewDate` | date | No | Stop loading reviews older than this date. |
| `reviewRatings` | array | No | Filter to reviews with these ratings. Leave empty for all. |
| `reviewsLanguages` | array | No | Filter to reviews in these languages. Leave empty for all. |
| `includeReviewerInfo` | boolean | No | Pull each reviewer's name, profile pic, location, etc. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/tripadvisor/reviews/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"urls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/tripadvisor/reviews/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "urls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `reviewId` | Review ID | text |
| `reviewUrl` | Review URL | url |
| `reviewTitle` | Review Title | text |
| `reviewText` | Review Text | text |
| `rating` | Rating | rating |
| `postedDate` | Posted Date | text |
| `travelDate` | Travel Date | text |
| `tripType` | Trip Type | text |
| `language` | Language | text |
| `helpfulVotes` | Helpful Votes | number |
| `subratings` | Subratings | object_array |
| `photos` | Photos | array |
| `ownerResponse` | Owner Response | object |
| `reviewerName` | Reviewer Name | text |
| `reviewerProfile` | Reviewer Profile | url |
| `reviewerLocation` | Reviewer Location | text |
| `reviewerContributions` | Reviewer Contributions | number |
| `reviewerAvatar` | Reviewer Avatar | url |
| `placeId` | Place ID | text |
| `place` | Place | object |


---

# Twitter / X Followers API

Pull a Twitter (X) profile's followers or following as full profile records — username, display name, bio, follower/following counts, location, links, account age, and latest tweet — from a single handle or profile URL.

**Pricing:** $0.00025 per profile

**Endpoint:** `POST /v1/data/twitter/followers/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `handle` | string | Yes | The X (Twitter) account whose network you want. Enter a handle or profile URL (e.g. 'NASA' or 'https://x.com/NASA'). |
| `listType` | string | No | Which list to pull: 'followers' (accounts that follow this profile) or 'following' (accounts this profile follows). |
| `maxResults` | integer | No | Number of profiles to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/twitter/followers/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"handle":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/twitter/followers/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "handle": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `username` | Username | text |
| `profileUrl` | Profile URL | url |
| `displayName` | Display Name | text |
| `accountId` | Account ID | text |
| `bio` | Bio | text |
| `website` | Website | url |
| `bioLinks` | Bio Links | array |
| `location` | Location | text |
| `followers` | Followers | number |
| `followingCount` | Following Count | number |
| `tweets` | Tweets | number |
| `mediaPosts` | Media Posts | number |
| `likesGiven` | Likes Given | number |
| `listedCount` | Listed Count | number |
| `protected` | Protected | boolean |
| `accountCreated` | Account Created | text |
| `pinnedTweetUrl` | Pinned Tweet URL | url |
| `profilePicture` | Profile Picture | url |
| `coverImage` | Cover Image | url |
| `followedHandle` | Followed Handle | text |
| `latestTweet` | Latest Tweet | object |


---

# Twitter / X Profiles API

Get Twitter (X) user profiles — bio, follower/following counts, verification status and type, location, and links. Look them up by handle or profile URL, or discover accounts by keyword search. Returns the same complete profile either way.

**Pricing:** $0.0005 per profile

**Endpoint:** `POST /v1/data/twitter/profiles/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `inputs` | array | No | One per line. You can input profile URLs or handles (e.g. 'NASA' or 'https://x.com/NASA'). |
| `searchTerms` | string | No | Keywords or topics to find X (Twitter) accounts for (e.g. 'climate scientist'). |
| `maxResults` | integer | No | Number of accounts to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/twitter/profiles/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/twitter/profiles/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `username` | Username | text |
| `profileUrl` | Profile URL | url |
| `displayName` | Display Name | text |
| `accountId` | Account ID | text |
| `bio` | Bio | text |
| `website` | Website | url |
| `bioLinks` | Bio Links | array |
| `location` | Location | text |
| `followers` | Followers | number |
| `following` | Following | number |
| `tweets` | Tweets | number |
| `mediaPosts` | Media Posts | number |
| `likesGiven` | Likes Given | number |
| `blueVerified` | Blue Verified | boolean |
| `verifiedType` | Verified Type | text |
| `accountType` | Account Type | text |
| `protected` | Protected | boolean |
| `accountCreated` | Account Created | text |
| `openDms` | Open DMs | boolean |
| `pinnedTweetUrl` | Pinned Tweet URL | url |
| `profilePicture` | Profile Picture | url |
| `coverImage` | Cover Image | url |


---

# Twitter / X Replies API

Extract every reply to a given tweet — each returned as a full tweet record with author profile, engagement metrics, media, mentions and quoted content. The original tweet is included too, flagged so you can tell it from the replies.

**Pricing:** $0.00025 per reply

**Endpoint:** `POST /v1/data/twitter/replies/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `conversation_id` | string | Yes | The tweet to fetch replies for — a tweet/status URL (https://x.com/.../status/<id>) or the bare numeric tweet ID. This is the conversation root. |
| `maxResults` | integer | No | Number of replies to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/twitter/replies/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"conversation_id":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/twitter/replies/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "conversation_id": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `tweetUrl` | Tweet URL | url |
| `tweetText` | Tweet Text | text |
| `postedDate` | Posted Date | text |
| `language` | Language | text |
| `isReply` | Is Reply | boolean |
| `views` | Views | number |
| `likes` | Likes | number |
| `retweets` | Retweets | number |
| `replies` | Replies | number |
| `quotes` | Quotes | number |
| `bookmarks` | Bookmarks | number |
| `replyToHandle` | Reply To Handle | text |
| `replyToTweetUrl` | Reply To Tweet URL | url |
| `quotedTweetUrl` | Quoted Tweet URL | url |
| `quotedTweetText` | Quoted Tweet Text | text |
| `hashtags` | Hashtags | array |
| `mentions` | Mentions | object_array |
| `outboundLinks` | Outbound Links | array |
| `tweetMedia` | Tweet Media | object_array |
| `author` | Author | object |


---

# Twitter / X Retweeters API

Find everyone who retweeted a given tweet, each returned as a full Twitter (X) profile — handle, display name, bio, follower/following counts, verification status, location, and links.

**Pricing:** $0.00025 per profile

**Endpoint:** `POST /v1/data/twitter/retweeters/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tweet_ids` | string | Yes | The tweet URL or numeric tweet ID (e.g. 'https://x.com/NASA/status/2039473910987534599' or '2039473910987534599') whose retweeters you want to retrieve. |
| `max_items_per_tweet` | integer | No | Number of retweeter profiles to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/twitter/retweeters/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"tweet_ids":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/twitter/retweeters/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "tweet_ids": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `username` | Username | text |
| `profileUrl` | Profile URL | url |
| `displayName` | Display Name | text |
| `accountId` | Account ID | text |
| `bio` | Bio | text |
| `website` | Website | url |
| `bioLinks` | Bio Links | array |
| `location` | Location | text |
| `followers` | Followers | number |
| `following` | Following | number |
| `tweets` | Tweets | number |
| `mediaPosts` | Media Posts | number |
| `likesGiven` | Likes Given | number |
| `blueVerified` | Blue Verified | boolean |
| `legacyVerified` | Legacy Verified | boolean |
| `accountCreated` | Account Created | text |
| `openDms` | Open DMs | boolean |
| `pinnedTweetUrl` | Pinned Tweet URL | url |
| `profilePicture` | Profile Picture | url |
| `coverImage` | Cover Image | url |
| `sourceTweetUrl` | Source Tweet URL | url |


---

# Twitter / X Tweets API

Extract tweets from Twitter (X) by handle, search keyword, or tweet URL — with full text, date, media, quoted/retweeted content, and all engagement metrics

**Pricing:** $0.00025 per tweet

**Endpoint:** `POST /v1/data/twitter/tweets/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `inputs` | string | No | A Twitter/X handle (e.g. 'elonmusk' for their timeline including retweets) or a single tweet URL to fetch. |
| `maxResults` | integer | No | Maximum number of tweets to return. Use 0 for all. |
| `query` | string | No | Optional advanced-search query string (Twitter search operators supported, e.g. 'from:nasa min_retweets:50 since:2026-01-01'). |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/twitter/tweets/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/twitter/tweets/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `tweetUrl` | Tweet URL | url |
| `tweetId` | Tweet ID | text |
| `tweetText` | Tweet Text | text |
| `postedDate` | Posted Date | text |
| `language` | Language | text |
| `conversationId` | Conversation ID | text |
| `views` | Views | number |
| `likes` | Likes | number |
| `retweets` | Retweets | number |
| `replies` | Replies | number |
| `quotes` | Quotes | number |
| `bookmarks` | Bookmarks | number |
| `isReply` | Is Reply | boolean |
| `isQuote` | Is Quote | boolean |
| `isPinned` | Is Pinned | boolean |
| `repliesRestricted` | Replies Restricted | boolean |
| `replyToHandle` | Reply To Handle | text |
| `replyToTweetUrl` | Reply To Tweet URL | url |
| `retweetedTweetUrl` | Retweeted Tweet URL | url |
| `retweetedTweetText` | Retweeted Tweet Text | text |
| `originalPostDate` | Original Post Date | text |
| `quotedTweetUrl` | Quoted Tweet URL | url |
| `quotedTweetText` | Quoted Tweet Text | text |
| `hashtags` | Hashtags | array |
| `mentions` | Mentions | object_array |
| `outboundLinks` | Outbound Links | array |
| `cashtags` | Cashtags | array |
| `linkCardTitle` | Link Card Title | text |
| `linkCardDescription` | Link Card Description | text |
| `linkCardDomain` | Link Card Domain | text |
| `tweetMedia` | Tweet Media | object_array |
| `taggedPlace` | Tagged Place | text |
| `taggedPlaceCountry` | Tagged Place Country | text |
| `authorId` | Author ID | text |
| `author` | Author | object |


---

# Upwork Jobs API

Extract Upwork job postings with their title, description, budget, required skills, and client details

**Pricing:** $0.003 per job

**Endpoint:** `POST /v1/data/upwork/jobs/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `inputs` | string | Yes | Search keyword or phrase to find Upwork job postings (e.g. 'python developer'). |
| `limit` | integer | No | Number of jobs to return (5–500). Use 0 for all. |
| `sortBy` | string | No | Sort order for results. |
| `isHourly` | boolean | No | Include jobs with hourly pricing. |
| `hourlyMinPrice` | integer | No | Lowest hourly rate. Only applies when "Include Hourly Jobs" is on. |
| `hourlyMaxPrice` | integer | No | Highest hourly rate. Only applies when "Include Hourly Jobs" is on. |
| `isFixed` | boolean | No | Include jobs with a fixed total budget. |
| `fixedMinPrice` | integer | No | Lowest fixed budget. Only applies when "Include Fixed-Price Jobs" is on. |
| `fixedMaxPrice` | integer | No | Highest fixed budget. Only applies when "Include Fixed-Price Jobs" is on. |
| `experienceLevel` | array | No | Filter by required experience level. |
| `clientHistory` | array | No | Filter by the client's hiring history on Upwork. |
| `projectLength` | array | No | Filter by project duration. |
| `hoursPerWeek` | array | No | Filter by required commitment. |
| `location` | array | No | Filter results by the client's country (e.g. 'United States'). |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/upwork/jobs/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"inputs":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/upwork/jobs/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "inputs": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `jobTitle` | Job Title | text |
| `jobUrl` | Job URL | url |
| `jobId` | Job ID | text |
| `jobDescription` | Job Description | text |
| `jobAccess` | Job Access | text |
| `jobStatus` | Job Status | text |
| `posted` | Posted | text |
| `jobType` | Job Type | text |
| `fixedBudget` | Fixed Budget | currency |
| `hourlyRateMin` | Hourly Rate Min | currency |
| `hourlyRateMax` | Hourly Rate Max | currency |
| `experienceLevel` | Experience Level | text |
| `projectLength` | Project Length | text |
| `weeklyWorkload` | Weekly Workload | text |
| `category` | Category | text |
| `categoryGroup` | Category Group | text |
| `occupation` | Occupation | text |
| `skills` | Skills | object_array |
| `skillGroups` | Skill Groups | object_array |
| `projectType` | Project Type | text |
| `featuredJob` | Featured Job | boolean |
| `contractToHire` | Contract To Hire | boolean |
| `positionsToHire` | Positions To Hire | number |
| `applicants` | Applicants | number |
| `interviewing` | Interviewing | number |
| `invitesSent` | Invites Sent | number |
| `unansweredInvites` | Unanswered Invites | number |
| `hired` | Hired | number |
| `client` | Client | object |
| `clientOtherOpenPostings` | Client Other Open Postings | object_array |
| `similarJobs` | Similar Jobs | object_array |
| `minJobSuccessScore` | Min Job Success Score | number |
| `englishLevel` | English Level | text |
| `risingTalentOk` | Rising Talent OK | boolean |
| `freelancerType` | Freelancer Type | text |
| `localMarketJob` | Local Market Job | boolean |
| `locationCheckRequired` | Location Check Required | boolean |
| `requiredCountries` | Required Countries | array |
| `requiredRegions` | Required Regions | array |
| `requiredLanguages` | Required Languages | array |
| `requiredTimezones` | Required Timezones | array |
| `deadline` | Deadline | text |
| `hourlyBudgetSource` | Hourly Budget Source | text |
| `resultRank` | Result Rank | number |


---

# Yelp Business API

Extract Yelp business profiles — name, address, phone, website, ratings, attributes, photos, review insights, popular dishes, and health inspections — by business URL or by location + keyword search. One clean row per business.

**Pricing:** $0.0005 per business

**Endpoint:** `POST /v1/data/yelp/business/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | array | No | Yelp business page URL to fetch (e.g. https://www.yelp.com/biz/molinari-delicatessen-san-francisco). |
| `location` | string | No | City, region, or address to search within (e.g. "San Francisco, CA"). Used with Keyword. |
| `keyword` | string | No | What to search for in the location — a plain term, not a URL (e.g. coffee, restaurants, plumbers, dentist). |
| `sort` | string | No | Search result ordering. |
| `priceLevels` | array | No | Search filter: restrict to price bands $ to $$$$. |
| `features` | array | No | Search filter: restrict to businesses with these features (e.g. Wheelchair Accessible, Dogs Allowed, Free WiFi). |
| `limit` | integer | No | Number of result pages to fetch (~80 businesses per page, up to 40 pages). Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/yelp/business/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/yelp/business/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `businessName` | Business Name | text |
| `businessUrl` | Business URL | url |
| `address` | Address | object |
| `neighborhoods` | Neighborhoods | array |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |
| `phone` | Phone | phone |
| `website` | Website | url |
| `menuUrl` | Menu URL | url |
| `rating` | Rating | number |
| `totalReviews` | Total Reviews | number |
| `starBreakdown` | Star Breakdown | object |
| `reviewInsights` | Review Insights | object_array |
| `reviewHighlights` | Review Highlights | object_array |
| `popularDishes` | Popular Dishes | object_array |
| `attributes` | Attributes | object_array |
| `specialties` | Specialties | text |
| `summary` | Summary | text |
| `yearEstablished` | Year Established | number |
| `history` | History | text |
| `photos` | Photos | array |
| `healthInspections` | Health Inspections | object_array |
| `hoursToday` | Hours (Today) | array |
| `qACount` | Q&A Count | number |
| `qAContent` | Q&A Content | object_array |


---

# Yelp Reviews API

Extract individual Yelp reviews from business pages — full review text, star rating, absolute review date, reviewer profile, reader-reaction counts (helpful, thanks, love this, oh no), photos, videos, and owner public replies. One clean row per review.

**Pricing:** $0.00025 per review

**Endpoint:** `POST /v1/data/yelp/reviews/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | string | Yes | Yelp business page URL to scrape reviews from (e.g. https://www.yelp.com/biz/katzs-delicatessen-new-york). |
| `maxReviews` | integer | No | Number of reviews to return in total. Use 0 for all available reviews. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/yelp/reviews/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"urls":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/yelp/reviews/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "urls": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `reviewId` | Review ID | text |
| `rating` | Rating | rating |
| `reviewText` | Review Text | text |
| `reviewDate` | Review Date | text |
| `reviewUrl` | Review URL | url |
| `language` | Language | text |
| `translatedText` | Translated Text | text |
| `publicReply` | Public Reply | text |
| `photos` | Photos | array |
| `photoCaption` | Photo Caption | object_array |
| `videos` | Videos | array |
| `totalReactions` | Total Reactions | number |
| `reactions` | Reactions | object |
| `firstReviewer` | First Reviewer | boolean |
| `reviewer` | Reviewer | object |
| `business` | Business | object |


---

# YouTube Channel Details API

Extract YouTube channel details — name, handle, subscribers, total views/videos, description, country, join date, verification, avatar/banner, and the channel's social + website links — by channel URL, @handle, or keyword search.

**Pricing:** $0.0005 per channel

**Endpoint:** `POST /v1/data/youtube/channels/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `urls` | array | No | YouTube channel URLs (e.g. https://www.youtube.com/@MrBeast or https://www.youtube.com/channel/UC...) or @handles. |
| `query` | string | No | Keyword or phrase to search YouTube channels for (e.g. 'tech reviews' or 'cooking'). Returns the full channel profile for each matching channel. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/youtube/channels/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/youtube/channels/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `channelName` | Channel Name | text |
| `handle` | Handle | text |
| `channelId` | Channel ID | text |
| `channelUrl` | Channel URL | url |
| `subscribers` | Subscribers | number |
| `totalViews` | Total Views | number |
| `totalVideos` | Total Videos | number |
| `avgViewsPerVideo` | Avg Views per Video | number |
| `description` | Description | text |
| `country` | Country | text |
| `joinedDate` | Joined Date | text |
| `joinedYear` | Joined Year | number |
| `verified` | Verified | boolean |
| `hasVideos` | Has Videos | boolean |
| `avatarUrl` | Avatar URL | url |
| `bannerUrl` | Banner URL | url |
| `instagramUrl` | Instagram URL | url |
| `twitterXUrl` | Twitter / X URL | url |
| `tiktokUrl` | TikTok URL | url |
| `websiteUrl` | Website URL | url |
| `links` | Links | object_array |


---

# YouTube Comments API

Extract YouTube comments — text, likes, replies, author details, and publish date — from any video URL

**Pricing:** $0.0005 per comment

**Endpoint:** `POST /v1/data/youtube/comments/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `videoUrl` | string | Yes | YouTube video URL to scrape comments from. E.g. https://www.youtube.com/watch?v=dQw4w9WgXcQ |
| `maxResults` | integer | No | Total number of comments to return. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/youtube/comments/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"videoUrl":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/youtube/comments/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "videoUrl": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `comment` | Comment | text |
| `likes` | Likes | number |
| `replies` | Replies | number |
| `author` | Author | text |
| `authorChannelId` | Author Channel ID | text |
| `authorVerified` | Author Verified | boolean |
| `authorIsArtist` | Author Is Artist | boolean |
| `authorIsOwner` | Author Is Owner | boolean |
| `authorThumbnail` | Author Thumbnail | url |
| `published` | Published | text |
| `publishedRelative` | Published (relative) | text |
| `commentId` | Comment ID | text |
| `videoUrl` | Video URL | url |
| `commentUrl` | Comment URL | url |


---

# YouTube Videos & Reels API

Scrape YouTube videos and Reels — by search query, channel URL, or direct video URLs. Get views, likes, comments, duration, publish date, description, keywords, category, channel info, and thumbnails.

**Pricing:** $0.0005 per video

**Endpoint:** `POST /v1/data/youtube/videos/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | No | Keyword or phrase to search YouTube (e.g. 'python tutorial'). Returns ranked video results matching the query. |
| `channelUrl` | string | No | YouTube channel URL (e.g. https://www.youtube.com/@MrBeast or https://www.youtube.com/channel/UC...) or @handle. Returns all videos from the channel. |
| `contentType` | string | No | Which part of the channel to pull (By Channel mode only): regular Videos or Shorts. Overrides any tab in the channel URL you paste. |
| `urls` | array | No | Direct YouTube video URLs (e.g. https://www.youtube.com/watch?v=...). One per line. Returns full metadata for each video. |
| `maxResults` | integer | No | Total number of videos to return. Applies to Search and Channel modes. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/youtube/videos/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/youtube/videos/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `type` | Type | text |
| `title` | Title | text |
| `videoUrl` | Video URL | url |
| `views` | Views | number |
| `likes` | Likes | number |
| `comments` | Comments | number |
| `durationS` | Duration (s) | number |
| `published` | Published | text |
| `description` | Description | text |
| `keywords` | Keywords | array |
| `category` | Category | text |
| `availableCaptions` | Available Captions | object_array |
| `isLive` | Is Live | boolean |
| `thumbnail` | Thumbnail | url |
| `channel` | Channel | text |
| `channelId` | Channel ID | text |
| `channelHandle` | Channel Handle | text |
| `subscribers` | Subscribers | text |
| `channelUrl` | Channel URL | url |
| `channelBadges` | Channel Badges | text |
| `channelAvatar` | Channel Avatar | image |


---

# Zepto Category API

Extract Zepto category page listings — products, prices, stock, ratings — from category URLs

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/zepto/category/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `category` | string | Yes | Top-level category (e.g. Cold Drinks & Juices). |
| `sub_category` | string | Yes | Sub-category within it (e.g. Soft Drinks). |
| `store_id` | string | No | Dark store — pick a city and pincode first. |
| `lat` | number | No | Or target by coordinates — latitude (use with longitude). |
| `lon` | number | No | Or target by coordinates — longitude (use with latitude). |
| `city` | string | No | City — filters the pincode and store lists. |
| `pincode` | string | No | Pincode — pick a city first; filters the store list. |
| `maxResults` | integer | No | How many products to return for the category. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/zepto/category/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"category":"...","sub_category":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/zepto/category/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "category": "...",
    "sub_category": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productName` | Product Name | text |
| `brand` | Brand | text |
| `variantId` | Variant ID | text |
| `productId` | Product ID | text |
| `price` | Price | currency |
| `mrp` | MRP | currency |
| `discount` | Discount % | percentage |
| `packSize` | Pack Size | text |
| `inStock` | In Stock | boolean |
| `stockCount` | Stock Count | number |
| `rating` | Rating | rating |
| `ratingCount` | Rating Count | number |
| `rank` | Rank | number |
| `sponsored` | Sponsored | boolean |
| `images` | Images | array |
| `productUrl` | Product URL | url |
| `description` | Description | text |
| `countryOfOrigin` | Country of Origin | text |
| `manufacturer` | Manufacturer | text |
| `seller` | Seller | text |
| `specifications` | Specifications | object_array |
| `storeId` | Store ID | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |


---

# Zepto Products API

Extract Zepto product details — MRP, selling price, stock — from product URLs

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/zepto/products/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | Product page URL to scrape. |
| `store_id` | string | No | Dark store — pick a city and pincode first. |
| `lat` | number | No | Or target by coordinates — latitude (use with longitude). |
| `lon` | number | No | Or target by coordinates — longitude (use with latitude). |
| `city` | string | No | City — filters the pincode and store lists. |
| `pincode` | string | No | Pincode — pick a city first; filters the store list. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/zepto/products/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"url":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/zepto/products/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "url": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productName` | Product Name | text |
| `brand` | Brand | text |
| `variantId` | Variant ID | text |
| `productId` | Product ID | text |
| `price` | Price | currency |
| `mrp` | MRP | currency |
| `discount` | Discount % | percentage |
| `packSize` | Pack Size | text |
| `inStock` | In Stock | boolean |
| `stockCount` | Stock Count | number |
| `rating` | Rating | rating |
| `ratingCount` | Rating Count | number |
| `category` | Category | text |
| `rank` | Rank | number |
| `sponsored` | Sponsored | boolean |
| `images` | Images | array |
| `productUrl` | Product URL | url |
| `description` | Description | text |
| `countryOfOrigin` | Country of Origin | text |
| `manufacturer` | Manufacturer | text |
| `seller` | Seller | text |
| `specifications` | Specifications | object_array |
| `storeId` | Store ID | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |


---

# Zepto Search API

Search Zepto by query — listings, prices, stock, ratings, images

**Pricing:** $0.001 per product

**Endpoint:** `POST /v1/data/zepto/search/run`

**Auth:** `Authorization: Bearer mk_live_...`

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | What to search for (e.g. milk, chocolate). |
| `store_id` | string | No | Dark store — pick a city and pincode first. |
| `lat` | number | No | Or target by coordinates — latitude (use with longitude). |
| `lon` | number | No | Or target by coordinates — longitude (use with latitude). |
| `city` | string | No | City — filters the pincode and store lists. |
| `pincode` | string | No | Pincode — pick a city first; filters the store list. |
| `maxResults` | integer | No | How many products to return for the search. Use 0 for all. |

## Example

```bash
curl -X POST https://api.mindcase.co/v1/data/zepto/search/run \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"params":{"query":"..."}}'
```

```python
import requests

resp = requests.post(
    "https://api.mindcase.co/v1/data/zepto/search/run",
    headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
    json={"params": {
    "query": "..."
}},
)
data = resp.json()
```

## Get the results

`run` is async and returns a `job_id`. Poll until `status` is `completed`, then read the rows:

```bash
# 1) check status
curl https://api.mindcase.co/v1/jobs/JOB_ID \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"

# 2) when status == completed, fetch the rows
curl https://api.mindcase.co/v1/jobs/JOB_ID/results \
  -H "Authorization: Bearer mk_live_YOUR_API_KEY"
```

Full API reference (auth, jobs, balance, SDKs, MCP): https://mindcase.co/skills.md

## Response columns

| Field | Display name | Type |
|-------|--------------|------|
| `productName` | Product Name | text |
| `brand` | Brand | text |
| `variantId` | Variant ID | text |
| `productId` | Product ID | text |
| `price` | Price | currency |
| `mrp` | MRP | currency |
| `discount` | Discount % | percentage |
| `packSize` | Pack Size | text |
| `inStock` | In Stock | boolean |
| `stockCount` | Stock Count | number |
| `rating` | Rating | rating |
| `ratingCount` | Rating Count | number |
| `category` | Category | text |
| `rank` | Rank | number |
| `sponsored` | Sponsored | boolean |
| `images` | Images | array |
| `productUrl` | Product URL | url |
| `description` | Description | text |
| `countryOfOrigin` | Country of Origin | text |
| `manufacturer` | Manufacturer | text |
| `seller` | Seller | text |
| `specifications` | Specifications | object_array |
| `storeId` | Store ID | text |
| `latitude` | Latitude | number |
| `longitude` | Longitude | number |

