# Poshmark Sold Comps & Resale Price Scraper (`kulqiz/poshmark-sold-comps`) Actor

Scrape SOLD Poshmark listings into resale price comps: sold price, days-to-sell, condition, and size, plus a summary per search (median, p25, p75 sold price, comp confidence, and a suggested list price). Built for Poshmark's 403 blocking.

- **URL**: https://apify.com/kulqiz/poshmark-sold-comps.md
- **Developed by:** [KULQIZ](https://apify.com/kulqiz) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

## Poshmark Sold Comps and Resale Price Scraper

Search any brand, item, or keyword on Poshmark and get its SOLD comps: real sold price,
days-to-sell, condition, size, and seller. Each run also returns a summary per search term:
median, p25, and p75 sold price, average days-to-sell, a comp-confidence score, and a
suggested list price. It does the pricing math for you.

Made for resellers, flippers, and sourcing sellers who price from real data. If you have
asked "what does this actually sell for on Poshmark, and how fast?", this answers it.

Pay-per-result: you pay for the listing records you get, and `maxItems` caps the spend.
Not affiliated with or endorsed by Poshmark.

### Why this over the free Poshmark scrapers

Most Poshmark scrapers on the Store are free hobby projects. They hand you a raw listing
dump and leave the analysis to you, and they tend to stall on Poshmark's 403 blocking. This
one is built for the pricing decision:

- Every run writes a per-search comps summary: median sold price, p25/p75, days-to-sell,
  price by condition, size and brand, a recency-weighted comp-confidence score, and a
  suggested list price.
- It is built for Poshmark's 403 reality: proxy rotation, session retirement on a block,
  challenge-page detection with backoff, and a per-run `data_quality` record so you see the
  real block rate and completeness of your own run.
- It is cheap: it reads Poshmark's search response directly and pages through results, with no
  headless browser and no per-listing page fetch. Measured around $0.20 per 1,000 results on
  datacenter proxy (150 comps for about 3 cents).
- Fields Poshmark does not show come back `null`, never guessed. Records are schema-validated
  before they are written.

Every number below comes from a reproducible run in `/benchmarks`. There are no figures here
we did not measure.

### Benchmarks

Measured 2026-06-17. Re-run with the scripts in `/benchmarks`.

| What we measured | Result |
|---|---|
| Live sold listings parsed (coach tabby, lululemon align, nike dunk) | 17 |
| Passed schema validation | 17 / 17 (100%) |
| Core field completeness on live data (price, sold date, days-to-sell, brand, size, condition) | 100% |
| Sold comps returned by one search fetch | 44 / 39 / 16 |
| Block rate, 24 paced requests from a plain datacenter IP, no proxy | 0 / 24 (0%) |

The block-rate number is a floor, not a production figure. It was one IP, a short session, at
modest paced volume. Poshmark's anti-bot escalates under sustained load, which is why every run
writes a `data_quality` record and why residential proxy is available for heavy runs. We have
not published a sustained-load block rate. Your run's `data_quality` is the real number.

We did not measure competitor block rates, accuracy, or price. We cannot run another Actor in
a controlled way, so there are no competitor numbers here.

### What you get

One dataset record per listing:

```json
{
  "itemId": "69bac03e74cb47e2344a7847",
  "url": "https://poshmark.com/listing/Coach-Tabby-26-Black-Leather-...",
  "title": "Coach Tabby 26 Black Leather",
  "brand": "Coach",
  "department": "Women",
  "category": "Bags",
  "size": "OS",
  "condition": "Like New",
  "color": "Black",
  "originalRetailPrice": 395.0,
  "listingPrice": 240.0,
  "soldPrice": 240.0,
  "currency": "USD",
  "isSold": true,
  "soldDateObserved": "2026-03-22",
  "daysToSell": 4,
  "likesCount": 47,
  "commentsCount": 6,
  "sellerUsername": "luxuryhandba",
  "imageUrls": ["https://di2ponv0v5otw.cloudfront.net/posts/..."],
  "scrapedAt": "2026-06-17T03:00:00Z",
  "sourceQuery": "coach tabby"
}
````

One Key-Value Store record per search term (`AGGREGATE-<slug>`). Example shape (for measured
numbers see Benchmarks and `/benchmarks`):

```json
{
  "query": "coach tabby",
  "count": 44, "soldCount": 41,
  "medianSoldPrice": 196.0, "p25SoldPrice": 160.0, "p75SoldPrice": 230.0,
  "outliersRemoved": 2,
  "avgDaysToSell": 12.2, "medianDaysToSell": 4,
  "sellThroughRate": null,
  "windowDays": 140, "pctSoldWithin30Days": 0.67, "pctSoldWithin90Days": 0.83,
  "compConfidence": "medium",
  "priceByCondition": { "Like New": 220.0, "New With Tags": 245.0, "Used": 150.0 },
  "priceBySize": { "OS": 196.0 },
  "pricingRecommendation": {
    "listAt": 196.0, "fastSaleListAt": 160.0, "topDollarListAt": 230.0,
    "expectedDaysToSell": 4, "confidence": "medium"
  }
}
```

`compConfidence` is transparent: `high` needs at least 30 sold comps and at least 60% sold
within 60 days, `medium` needs at least 10 sold comps, otherwise `low`. Price stats are
outlier-trimmed (IQR fence) once the sample is large enough, so one mispriced bundle does not
skew your median. `sellThroughRate` is `null` in the default sold-only mode, because a
sold-only sample is 100% sold. Set `soldOnly` to `false` to sample sold and active and get a
real rate.

### A real example (live sample, June 2026)

From a small live sample, reproducible in `/benchmarks`. Time-to-sell varies a lot by category:

| Query | Median sold | p25 to p75 | Median days-to-sell |
|---|---|---|---|
| coach tabby | $195.50 | $160 to $230 | 2 |
| lululemon align | $45.00 | $40 to $50 | 19 |
| nike dunk | $59.50 | $39 to $89 | 34 |

A Coach Tabby in good shape near $195 tends to move within days. A Nike Dunk at these prices
sits much longer. Small live sample; `compConfidence` rises as you raise `maxItems`, since each
search page exposes 16 to 44 comps.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `searchQueries` | array of string | required | Search terms. Each is scraped on its own and gets its own aggregate. |
| `brand` | string | (none) | Keep only listings whose brand matches (case-insensitive). |
| `department` | enum | (none) | Women, Men, Kids, Home, Electronics, Pets, or Other. |
| `category` | string | (none) | Keep only listings whose category contains this text (e.g. Bags). |
| `sizes` | array of string | (none) | Keep only these sizes (e.g. `["M","L","OS","34"]`). |
| `conditions` | array of string | (none) | Keep only matching conditions (e.g. `["New With Tags"]`). |
| `soldOnly` | boolean | `true` | Only collect SOLD listings. Set `false` for sell-through. |
| `maxItems` | integer | `200` | Hard cap on total records across all queries. Caps cost. |
| `includeSellerStats` | boolean | `false` | Experimental. Fetches each seller's closet; often null until verified, so off by default. |
| `computeAggregates` | boolean | `true` | Write one summary record per query to the Key-Value Store. |
| `maxConcurrency` | integer | `3` | Parallel pages. Keep low to stay polite and avoid blocks. |
| `proxyConfiguration` | proxy | datacenter | Datacenter by default (cheapest, works at modest volume). Switch to RESIDENTIAL for heavy or blocked runs. |

Example input:

```json
{
  "searchQueries": ["coach tabby", "lululemon align"],
  "soldOnly": true,
  "maxItems": 100,
  "computeAggregates": true,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

Export the dataset as JSON, CSV, Excel, or HTML from the run's Dataset tab. Read the per-query
summary from the Key-Value Store tab (`AGGREGATE-<query-slug>`), and the per-run reliability
record at `DATA_QUALITY`.

### Reliability and the 403 question

Poshmark blocks scraping with HTTP 403. This is the real risk for any Poshmark Actor, so here
is the honest version instead of a slogan:

- Datacenter proxy by default (cheapest, and it works for Poshmark at modest volume). Switch to
  residential for heavy or blocked runs.
- The session pool retires IPs on 403, 429, or 503 and rotates to a fresh session.
- A block or challenge page (including PerimeterX-style pages) triggers jittered backoff, a
  session rotation, then a retry. If a page stays blocked it is skipped and the run finishes
  with partial data instead of crashing.
- Every run writes a `DATA_QUALITY` record: block rate, items returned versus requested, and
  per-field completeness. You measure reliability on your own run.
- Measured on the platform: 150 comps across 4 paginated requests, 0 blocks, about 96% core
  completeness, around $0.21 per 1,000 results on datacenter (compConfidence reaches "high" at this
  sample). Your `DATA_QUALITY` record is the number for your run.

If yields drop, lower `maxConcurrency`, switch to residential proxy, and reduce `maxItems`.

### How to run

In the Apify Console, open the Actor, paste the input, and click Start.

By API:

```bash
curl -X POST "https://api.apify.com/v2/acts/<username>~poshmark-sold-comps/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{ "searchQueries": ["coach tabby"], "maxItems": 50 }'
```

Local development:

```bash
pip install -r requirements.txt
apify run
python -m src.main --validate
python -m pytest -q
python -m benchmarks.fetch_live "coach tabby" --per-query 7
python -m benchmarks.measure_live
```

### FAQ

**Will Poshmark's 403 blocking break my run?** It is the main risk for any Poshmark scraper.
This one rotates sessions on a block, backs off, and finishes with partial data plus a
`DATA_QUALITY` record rather than dying. Datacenter proxy is the default and cheapest; switch
to residential for heavy or blocked runs.

**Are these real sold prices?** Yes, filtered to `availability=sold_out`. Poshmark exposes no
separate final or offer amount, so `soldPrice` equals the listing price at the time of sale.

**Why is `sellThroughRate` null?** The default mode collects sold listings only, which is 100%
sold by definition. Set `soldOnly` to `false` to sample sold and active and get a true rate.

**Can I get eBay or Mercari comps?** The engine sits behind a thin marketplace adapter, so
another marketplace can be added without rewriting the crawler. Ask if you need one.

### Responsible use, legal, and ToS

- Public data only. It reads publicly visible listing pages. No login, credentials, tokens, or
  paywall bypass.
- No personal data beyond public seller handles and stats. No buyer data.
- Respect Poshmark's Terms of Service and your local laws. Scraping public pages is widely
  considered permissible, but Poshmark's ToS restricts automated access, and you are
  responsible for how you use this Actor and the data. Use modest volumes and cache results.
- Intended for analytics and pricing research by resellers. Not affiliated with or endorsed by
  Poshmark.

### Limitations and known-brittle spots

- Sold price equals the listing price at the time of sale. Poshmark exposes no separate final
  amount.
- Seller rating, sales, and followers are best-effort from the public closet page and may be
  `null` until verified for your region and layout.
- Brand is seller-entered and sometimes inconsistent (for example "Coach" versus "Coach
  Tabby"), so `priceByBrand` is most useful across multi-brand queries.
- Condition labels are normalized from Poshmark's internal codes. Uncommon codes fall back to
  New or Used, or the raw code, rather than guessing a grade.
- Comps per query are bounded by how many sold results Poshmark has for the term; the Actor pages
  through them up to `maxItems`. Broad terms return thousands, narrow terms fewer.
- Poshmark can change its DOM or payload at any time. Extraction is layered (embedded app-state
  first, then JSON-LD, then meta tags, then the DOM) and is verified against live HTML in
  `/benchmarks`. See `NOTES.md` for the exact brittle points.

### Found this useful

If it saved you time, a short review on the Store helps other people find it. Found a bug or a
missing field? Open an issue and it gets fixed.

See `CHANGELOG.md`. Current version: 0.4.0.

# Actor input Schema

## `searchQueries` (type: `array`):

One or more Poshmark search terms, e.g. "coach tabby" or "lululemon align 6". Each query is scraped independently and gets its own aggregate record.

## `brand` (type: `string`):

Restrict results to a brand (post-filtered against each listing's parsed brand, and added as a search facet when possible). Example: "Coach".

## `department` (type: `string`):

Restrict to a Poshmark department.

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

Restrict to a category label, e.g. "Bags", "Jeans". Post-filtered (substring, case-insensitive) against each listing's parsed category.

## `sizes` (type: `array`):

Keep only listings whose size matches any of these, e.g. \["M", "L", "OS", "34"]. Case-insensitive.

## `conditions` (type: `array`):

Keep only listings whose condition matches any of these human labels, e.g. \["New With Tags", "Excellent Used Condition"]. Case-insensitive substring match.

## `soldOnly` (type: `boolean`):

Only collect SOLD listings (availability=sold\_out). This is the core resale-comp use case. Turn off to also include active listings.

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

Hard cap on the total number of listing records across all queries. Billing is pay-per-result, so this also caps cost.

## `includeSellerStats` (type: `boolean`):

Fetch each seller's closet page for rating, number of sales and follower count. EXPERIMENTAL: the closet layout is not yet fully mapped, so these fields are often null. Off by default so you do not pay extra requests/time for empty data.

## `computeAggregates` (type: `boolean`):

After scraping, write one aggregate record per query to the Key-Value Store (median/mean/p25/p75 sold price, avg days-to-sell, sell-through rate, price by condition/size).

## `maxConcurrency` (type: `integer`):

Maximum parallel browser pages. Keep low to stay polite and avoid blocks.

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

Apify datacenter proxy by default: it works for Poshmark at modest volume and is the cheapest option. For large or blocked runs, switch to RESIDENTIAL (more reliable, higher cost). Watch the DATA\_QUALITY record's blockRate to decide.

## Actor input object example

```json
{
  "searchQueries": [
    "coach tabby"
  ],
  "soldOnly": true,
  "maxItems": 200,
  "includeSellerStats": false,
  "computeAggregates": true,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# API

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

## JavaScript example

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

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

// Prepare Actor input
const input = {
    "searchQueries": [
        "coach tabby"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("kulqiz/poshmark-sold-comps").call(input);

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

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

```

## Python example

```python
from apify_client import ApifyClient

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

# Prepare the Actor input
run_input = {
    "searchQueries": ["coach tabby"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("kulqiz/poshmark-sold-comps").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "coach tabby"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call kulqiz/poshmark-sold-comps --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kulqiz/poshmark-sold-comps",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Poshmark Sold Comps & Resale Price Scraper",
        "description": "Scrape SOLD Poshmark listings into resale price comps: sold price, days-to-sell, condition, and size, plus a summary per search (median, p25, p75 sold price, comp confidence, and a suggested list price). Built for Poshmark's 403 blocking.",
        "version": "0.4",
        "x-build-id": "5C6QAeq6KEtvoWKKl"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kulqiz~poshmark-sold-comps/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kulqiz-poshmark-sold-comps",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/kulqiz~poshmark-sold-comps/runs": {
            "post": {
                "operationId": "runs-sync-kulqiz-poshmark-sold-comps",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/kulqiz~poshmark-sold-comps/run-sync": {
            "post": {
                "operationId": "run-sync-kulqiz-poshmark-sold-comps",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchQueries"
                ],
                "properties": {
                    "searchQueries": {
                        "title": "Search queries",
                        "minItems": 1,
                        "type": "array",
                        "description": "One or more Poshmark search terms, e.g. \"coach tabby\" or \"lululemon align 6\". Each query is scraped independently and gets its own aggregate record.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "brand": {
                        "title": "Brand (optional)",
                        "type": "string",
                        "description": "Restrict results to a brand (post-filtered against each listing's parsed brand, and added as a search facet when possible). Example: \"Coach\"."
                    },
                    "department": {
                        "title": "Department (optional)",
                        "enum": [
                            "Women",
                            "Men",
                            "Kids",
                            "Home",
                            "Electronics",
                            "Pets",
                            "Other"
                        ],
                        "type": "string",
                        "description": "Restrict to a Poshmark department."
                    },
                    "category": {
                        "title": "Category (optional)",
                        "type": "string",
                        "description": "Restrict to a category label, e.g. \"Bags\", \"Jeans\". Post-filtered (substring, case-insensitive) against each listing's parsed category."
                    },
                    "sizes": {
                        "title": "Sizes (optional)",
                        "type": "array",
                        "description": "Keep only listings whose size matches any of these, e.g. [\"M\", \"L\", \"OS\", \"34\"]. Case-insensitive.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "conditions": {
                        "title": "Conditions (optional)",
                        "type": "array",
                        "description": "Keep only listings whose condition matches any of these human labels, e.g. [\"New With Tags\", \"Excellent Used Condition\"]. Case-insensitive substring match.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "soldOnly": {
                        "title": "Sold only",
                        "type": "boolean",
                        "description": "Only collect SOLD listings (availability=sold_out). This is the core resale-comp use case. Turn off to also include active listings.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Hard cap on the total number of listing records across all queries. Billing is pay-per-result, so this also caps cost.",
                        "default": 200
                    },
                    "includeSellerStats": {
                        "title": "Include seller stats (experimental)",
                        "type": "boolean",
                        "description": "Fetch each seller's closet page for rating, number of sales and follower count. EXPERIMENTAL: the closet layout is not yet fully mapped, so these fields are often null. Off by default so you do not pay extra requests/time for empty data.",
                        "default": false
                    },
                    "computeAggregates": {
                        "title": "Compute aggregates",
                        "type": "boolean",
                        "description": "After scraping, write one aggregate record per query to the Key-Value Store (median/mean/p25/p75 sold price, avg days-to-sell, sell-through rate, price by condition/size).",
                        "default": true
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency (advanced)",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Maximum parallel browser pages. Keep low to stay polite and avoid blocks.",
                        "default": 3
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify datacenter proxy by default: it works for Poshmark at modest volume and is the cheapest option. For large or blocked runs, switch to RESIDENTIAL (more reliable, higher cost). Watch the DATA_QUALITY record's blockRate to decide.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
