# TeePublic Products Scraper - Low-cost 💲🔥👕🛍️ (`delectable_incubator/teepublic-products-scraper-low-cost`) Actor

👕🔎 Extract TeePublic product listings with ease. Collect product titles, prices, styles, tags, colors, artists, categories, product images, and product URLs. Ideal for print-on-demand research, product trend analysis, competitor monitoring, e-commerce intelligence, and merchandise datasets. 📊🚀

- **URL**: https://apify.com/delectable\_incubator/teepublic-products-scraper-low-cost.md
- **Developed by:** [Prime Scrape](https://apify.com/delectable_incubator) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## 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

<p align="center">
  <img src="https://i.ibb.co/jkNS73wX/readme.png" alt="PrimeScrape TeePublic Product Scraper" width="100%">
</p>

---

## 👕🛍️ TeePublic Product Scraper | Bulk TeePublic Products Scraper | Apify Actor

### 🚀 Extract TeePublic Products in Seconds (No Code)

The **TeePublic Product Scraper** is a powerful, scalable and SEO-optimized Apify Actor built to scrape **TeePublic product listings** in bulk.

Extract product information, design metadata, pricing, tags, styles, designers, and product URLs for print-on-demand research, e-commerce intelligence, competitor monitoring, AI datasets, and trend analysis.

---

## 🔥 Why This TeePublic Scraper?

✔ Best TeePublic scraper on Apify

✔ Bulk URL scraping (multiple category & search URLs)

✔ Fast & scalable product extraction

✔ Automatic pagination support

✔ 100% structured JSON / CSV / Excel output

✔ Ideal for print-on-demand research

✔ Perfect for sellers, agencies & data analysts

✔ No coding required

---

## 🎯 What This Scraper Does

This Apify Actor extracts real-time product listings directly from **TeePublic**.

Simply provide one or multiple TeePublic URLs and the scraper automatically collects every available product.

#### 📌 Core Features

✅ Scrape TeePublic product listings

✅ Bulk URL scraping (SEO BOOST 🚀)

✅ Multiple category support

✅ Search results scraping

✅ Automatic pagination

✅ Extract prices, designers & tags

✅ Extract product styles & colors

✅ Export clean structured datasets

✅ High-speed cloud extraction

---

## ⚡ Input Configuration (Simple & Powerful)

### 🔥 BULK URL MODE (SEO BOOST 🚀)

````

{
"urls": \[
"https://www.teepublic.com/t-shirts/santa",
"https://www.teepublic.com/t-shirts?query=no+kings",
"https://www.teepublic.com/hoodies",
"https://www.teepublic.com/stickers",
"https://www.teepublic.com/posters"
],
"maxItemsPerUrl": 200
}

```

---

## 📊 Extracted Product Data (Structured Output)

| Field | Description |
|------|-------------|
| designId | Unique design identifier |
| productId | Product identifier |
| title | Product title |
| designer | Designer / Artist |
| priceSale | Sale price |
| priceOriginal | Original price |
| currency | Currency |
| style | Product style |
| gender | Target gender |
| color | Product color |
| mainTag | Main category |
| tags | Product tags |
| detailUrl | Direct product URL |

---

## 💡 Use Cases (High Demand SEO Keywords)

Perfect for:

👕 Print-on-demand product scraping

📊 POD market research

💰 Price monitoring

🎨 Design trend analysis

🏢 Competitor intelligence

📈 E-commerce analytics

🤖 AI training datasets

🔎 Product catalog monitoring

⚡ Bulk product extraction

---

## 🚀 Key Features (Apify SEO Optimized)

⚡ Bulk URL scraping support

🌍 Full TeePublic marketplace coverage

📌 Automatic pagination support

🧠 Clean structured output

📊 High-speed extraction engine

🔁 Auto retry & stability system

💾 Export-ready datasets

⚙️ Scalable cloud execution

🚀 Enterprise-ready architecture

---

## 📤 Output Formats Supported

✔ JSON

✔ CSV

✔ Excel XLSX

✔ XML

✔ HTML

---

## 📦 Example Output

```

{
"designId": "987654",
"productId": "123456",
"title": "Funny Christmas Santa Shirt",
"designer": "CoolArtist",
"priceSale": "$18",
"priceOriginal": "$22",
"currency": "USD",
"style": "t-shirt",
"gender": "unisex",
"color": "black",
"mainTag": "christmas",
"tags": \[
"funny",
"santa",
"holiday"
],
"detailUrl": "https://www.teepublic.com/t-shirt/123456"
}

````

---

## 📊 Preconfigured Dataset Views

#### 🔹 Overview

Includes:

- Design ID
- Product ID
- Product Title
- Designer
- Sale Price
- Original Price
- Style
- Gender
- Color
- Tags
- Product URL

Perfect for quick product comparisons.

---

#### 🔹 Detailed

Includes:

- Complete product metadata

- Pricing information

- Designer information

- Product style

- Color

- Tags

- Direct product URL

Ideal for:

📊 POD market intelligence

👕 Product catalog analysis

💰 Price tracking

📈 Trend discovery

---

#### 🔹 By Source URL

Compare multiple TeePublic categories or searches.

Includes:

- Source URL

- Product ID

- Product Title

- Designer

- Price

- Style

- Tags

- Product URL

Perfect for comparing:

👕 Categories

🎨 Design niches

💰 Pricing strategies

📈 Trending products

---

## 🔥 Why This is the BEST TeePublic Scraper on Apify?

✔ Optimized for Apify search ranking

✔ Bulk URL support (rare feature)

✔ High-performance extraction engine

✔ Automatic pagination

✔ Enterprise-ready scalability

✔ Clean structured datasets

✔ Print-on-Demand intelligence ready

✔ Perfect for SEO traffic & marketplace visibility

---

## 💸 Pricing

This scraper uses a **pay-per-result** pricing model.

💳 **Price: $2.77 / 1,000 results**

You only pay for successfully extracted records.


---

## ❓ FAQ (SEO BOOST SECTION)

#### Can I scrape multiple TeePublic URLs?

Yes — Bulk URL mode is fully supported.

#### Can I scrape multiple categories?

Yes.

#### Does the scraper support search pages?

Yes.

#### Is pagination automatic?

Yes.

#### Can I limit the number of extracted products?

Yes. Simply configure **maxItemsPerUrl**.

#### Is coding required?

No — this is a 100% no-code Apify Actor.

#### Can I export the data?

Yes — JSON, CSV, Excel, XML and HTML are supported.

---

## ⚠️ Disclaimer

This tool is an independent data extraction solution and is **not affiliated with, endorsed by, or sponsored by TeePublic.**

---

## 🔗 Related Actors

We are building the complete **PrimeScrape E-commerce Intelligence Suite**.

👉 Coming Soon 🚀

---

## 🌍 PrimeScrape Ecosystem

Built for large-scale scraping, automation, AI datasets and market intelligence.

🛍️ E-commerce intelligence

👕 Print-on-Demand analytics

📊 Market research

🏢 Competitor intelligence

🤖 AI training datasets

⚙️ Automation pipelines

📈 Product trend monitoring

---

## 📬 Support

⭐⭐⭐⭐⭐ Leave a review if you enjoy this actor.

📩 Contact us for custom scraping solutions, enterprise features or private actors.

# Actor input Schema

## `urls` (type: `array`):

List of TeePublic category or search URLs to scrape. 

Examples:
• https://www.teepublic.com/t-shirts/santa
• https://www.teepublic.com/t-shirts?query=no+kings
• https://www.teepublic.com/t-shirts/funny

⚠️ URLs must be from teepublic.com.
## `maxitems` (type: `integer`):

Maximum number of product listings to collect per URL. The scraper paginates until this limit is reached or no more results are found.

## Actor input object example

```json
{
  "urls": [
    "https://www.teepublic.com/t-shirts/posters",
    "https://www.teepublic.com/t-shirts?query=no+kings"
  ],
  "maxitems": 80
}
````

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "urls": [
        "https://www.teepublic.com/t-shirts/posters",
        "https://www.teepublic.com/t-shirts?query=no+kings"
    ],
    "maxitems": 80
};

// Run the Actor and wait for it to finish
const run = await client.actor("delectable_incubator/teepublic-products-scraper-low-cost").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 = {
    "urls": [
        "https://www.teepublic.com/t-shirts/posters",
        "https://www.teepublic.com/t-shirts?query=no+kings",
    ],
    "maxitems": 80,
}

# Run the Actor and wait for it to finish
run = client.actor("delectable_incubator/teepublic-products-scraper-low-cost").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 '{
  "urls": [
    "https://www.teepublic.com/t-shirts/posters",
    "https://www.teepublic.com/t-shirts?query=no+kings"
  ],
  "maxitems": 80
}' |
apify call delectable_incubator/teepublic-products-scraper-low-cost --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=delectable_incubator/teepublic-products-scraper-low-cost",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TeePublic Products Scraper - Low-cost 💲🔥👕🛍️",
        "description": "👕🔎 Extract TeePublic product listings with ease. Collect product titles, prices, styles, tags, colors, artists, categories, product images, and product URLs. Ideal for print-on-demand research, product trend analysis, competitor monitoring, e-commerce intelligence, and merchandise datasets. 📊🚀",
        "version": "0.0",
        "x-build-id": "pBYit5WIXlVUUoTFg"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/delectable_incubator~teepublic-products-scraper-low-cost/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-delectable_incubator-teepublic-products-scraper-low-cost",
                "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/delectable_incubator~teepublic-products-scraper-low-cost/runs": {
            "post": {
                "operationId": "runs-sync-delectable_incubator-teepublic-products-scraper-low-cost",
                "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/delectable_incubator~teepublic-products-scraper-low-cost/run-sync": {
            "post": {
                "operationId": "run-sync-delectable_incubator-teepublic-products-scraper-low-cost",
                "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": [
                    "urls",
                    "maxitems"
                ],
                "properties": {
                    "urls": {
                        "title": "TeePublic URLs 🔍",
                        "type": "array",
                        "description": "List of TeePublic category or search URLs to scrape. \n\nExamples:\n• https://www.teepublic.com/t-shirts/santa\n• https://www.teepublic.com/t-shirts?query=no+kings\n• https://www.teepublic.com/t-shirts/funny\n\n⚠️ URLs must be from teepublic.com.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxitems": {
                        "title": "Maximum Products per URL 📄",
                        "type": "integer",
                        "description": "Maximum number of product listings to collect per URL. The scraper paginates until this limit is reached or no more results are found.",
                        "default": 80
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
