# Cobasi Pet Product Catalog Scraper (Brazil) (`maximedupre/cobasi`) Actor

Collect the public Cobasi Brazil pet-product catalog in a structured dataset. Get product names, links, IDs, images, brands, categories, prices in Brazilian reais, stock status, Clube Cobasi prices, ratings, descriptors, variants, and collection times when Cobasi shows them.

- **URL**: https://apify.com/maximedupre/cobasi.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** E-commerce, Business, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.45 / 1,000 pet products

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

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

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

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

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

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

# README

### 🐾 Cobasi Brazil product catalog

Ecommerce teams, pet brands, market researchers, and developers can collect the public Cobasi Brazil pet-product catalog in a structured dataset. Each row holds a product name, page, ID, images, brand, categories, prices in Brazilian reais, stock status, and collection time. It also includes Clube Cobasi prices, ratings, descriptors, and public variants when Cobasi shows them. Use the data to review catalog coverage, compare current prices and stock, or build product research tables without copying pages by hand.

- Collect the [**Cobasi Pet Product Catalog**](https://apify.com/maximedupre/cobasi/examples/cobasi-pet-product-catalog) for a structured view of public products.
- Review the [**Cobasi Product Catalog**](https://apify.com/maximedupre/cobasi/examples/cobasi-product-catalog) to compare product names, prices, and stock.
- List [**Cobasi Pet Products**](https://apify.com/maximedupre/cobasi/examples/cobasi-pet-products) with product pages, brands, categories, and images.
- Export [**Cobasi Products**](https://apify.com/maximedupre/cobasi/examples/cobasi-products) with current prices and availability.
- Use [**Cobasi**](https://apify.com/maximedupre/cobasi/examples/cobasi) to save the public Brazil catalog to a dataset.

#### 📦 Cobasi product rows

The default dataset has one row for each public Cobasi product saved during the run. A row can include the product page, source ID, images, brand, breadcrumb categories, regular price, stock status, Clube Cobasi pricing, ratings, product descriptors, public variants, and collection times. When the same source product appears again during discovery, the first eligible occurrence is saved and later matches are ignored.

#### ▶️ Collect a Cobasi catalog snapshot

1. Leave **Product limit** empty to return all available products until the source is exhausted.
2. Enter a positive number when you want to stop after that many products.
3. Start the run and open the default dataset.

The Actor reads the public Cobasi Brazil catalog. It does not collect private or customer-specific catalog data.

#### ⚙️ Input

Set the optional limit below.

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `maxItems` | integer | Limits the number of products saved. Leave it empty to return all available products until the source is exhausted, or enter a positive number to stop after that many products. |

**Example input**

This genuine input is from the successful current-beta run. It limits the run to 100 products.

```json
{
  "maxItems": 100
}
```

#### 🧾 Output

The run output links to the default dataset. The dataset contains one product row for each saved public Cobasi product.

**Run output**

| Field | Type | What it does |
| --- | --- | --- |
| `defaultDataset` | string | Links to the default dataset with the product rows. |

**Product row**

| Field | Type | What it does |
| --- | --- | --- |
| `name` | string | Product name shown in the Cobasi catalog. |
| `productUrl` | string (URL) | Public Cobasi product page. |
| `productId` | string | Source identifier for the product. |
| `images` | array of strings | Public product image URLs, in the order provided by Cobasi. |
| `brand` | string, optional | Product brand when shown. |
| `categories` | array of strings, optional | Breadcrumb categories from broadest to narrowest. |
| `regularPrice` | number | Current regular price in Brazilian reais. |
| `stockAvailable` | boolean | Whether Cobasi shows the product as available at collection time. |
| `clubeCobasi` | object, optional | Public Clube Cobasi price and discount when shown. |
| `clubeCobasi.price` | number | Current Clube Cobasi price in Brazilian reais. |
| `clubeCobasi.discountPercent` | number | Discount percentage shown for the Clube Cobasi price. |
| `ratings` | object, optional | Average rating and review count when shown. |
| `ratings.average` | number | Average customer rating from zero to five. |
| `ratings.reviewCount` | integer | Number of customer reviews shown by Cobasi. |
| `descriptors` | object, optional | Product details such as weight, flavor, animal species, life stage, and size when shown. |
| `descriptors.weight` | string, optional | Product weight, including its unit. |
| `descriptors.flavor` | string, optional | Product flavor. |
| `descriptors.animalSpecies` | array of strings, optional | Animal species named for the product. |
| `descriptors.lifeStage` | string, optional | Animal life stage named for the product. |
| `descriptors.size` | string, optional | Product or breed size shown by Cobasi. |
| `variants` | array of objects | Public product variants found for the product. |
| `variants[].variantId` | string | Source identifier for the variant. |
| `variants[].name` | string | Variant name or label shown by Cobasi. |
| `variants[].regularPrice` | number | Current regular price for the variant in Brazilian reais. |
| `variants[].stockAvailable` | boolean | Whether Cobasi shows the variant as available at collection time. |
| `variants[].clubeCobasi` | object, optional | Public Clube Cobasi price and discount for the variant when shown. |
| `variants[].clubeCobasi.price` | number | Current Clube Cobasi price for the variant in Brazilian reais. |
| `variants[].clubeCobasi.discountPercent` | number | Discount percentage shown for the variant's Clube Cobasi price. |
| `collectedAt` | date-time string | Time when Cobasi data for the product was collected. |
| `firstSeenAt` | date-time string, optional | First time the product was seen in saved catalog progress when available. |

**Example product row**

This genuine row is from the successful current-beta run with `maxItems` set to 100.

```json
{
  "name": "Petisco Bilisko Bifinho para Cães de Fígado com Couve",
  "productUrl": "https://www.cobasi.com.br/bifinho-de-figado-para-caes-bilisko-3798711/p",
  "productId": "3798711",
  "images": [
    "https://cobasi.vteximg.com.br/arquivos/ids/726158/Petisco-Bilisko-Bifinho-de-Figado-para-Caes-65g-798711.jpg?v=638290078526600000"
  ],
  "regularPrice": 6.19,
  "stockAvailable": true,
  "variants": [
    {
      "variantId": "798711",
      "name": "65g",
      "regularPrice": 6.19,
      "stockAvailable": true,
      "clubeCobasi": {
        "price": 5.57,
        "discountPercent": 10.02
      }
    },
    {
      "variantId": "584053",
      "name": "800g",
      "regularPrice": 57.9,
      "stockAvailable": true,
      "clubeCobasi": {
        "price": 52.11,
        "discountPercent": 10
      }
    }
  ],
  "collectedAt": "2026-08-12T15:43:37.126Z",
  "brand": "Bilisko",
  "categories": [
    "Cachorro",
    "Petiscos",
    "Bifinhos"
  ],
  "clubeCobasi": {
    "price": 5.57,
    "discountPercent": 10.02
  },
  "ratings": {
    "average": 4.8,
    "reviewCount": 139
  },
  "descriptors": {
    "weight": "65g",
    "flavor": "Fígado",
    "animalSpecies": [
      "Cachorro"
    ],
    "lifeStage": "Filhote | Adulto | Sênior",
    "size": "Raças Minis | Raças Pequenas | Raças Médias | Raças Grandes"
  },
  "firstSeenAt": "2026-08-12T15:43:38.949Z"
}
```

#### 💳 Pricing

Pricing uses one pay-per-event charge: **Pet product**. One pet product is charged after it is saved to your dataset. **Product limit** can cap how many product rows the run saves.

#### 🔌 Integrations

Open the default dataset in Apify, use its dataset URL with the Apify API, or export the saved rows with Apify's tools.

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Can I collect all available Cobasi products?

Yes. Leave **Product limit** empty to return all available products until the source is exhausted. Enter a positive number to stop after that many products.

##### What happens when the same product appears more than once?

The first eligible occurrence is saved. Later matches for the same source product are ignored.

##### Does each row include every product field?

Required fields are saved for every product row. Optional fields such as brand, ratings, descriptors, and first-seen time appear when Cobasi provides them.

##### Does it include product variants?

Yes. When a product exposes public variants, the dataset includes their IDs, names, regular prices, stock status, and Clube Cobasi pricing when shown.

##### Does it keep price history?

No. Each run is a current catalog snapshot. `collectedAt` shows when the row was collected, and `firstSeenAt` is included when saved catalog progress provides it.

##### Does it collect other retailers or private prices?

No. The scope is the public Cobasi Brazil catalog. It does not collect private, customer-specific, or other-retailer catalogs.

##### Do I need a Cobasi login?

No. The Actor reads the public catalog and does not ask for customer authentication.

### 📝 Changelog

**0.0: Initial release**

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~cobasi/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Trendyol Scraper](https://apify.com/maximedupre/trendyol-scraper): Compare marketplace product prices, brands, sellers, ratings, and stock signs.
- [MercadoLibre Search Scraper](https://apify.com/maximedupre/mercado-libre-search-scraper): Search a Latin American marketplace for products, prices, sellers, shipping, and ratings.
- [Amazon Price Tracker](https://apify.com/maximedupre/amazon-price-tracker): Save current Amazon product prices, discounts, ratings, sellers, and availability.
- [BikeShop Brasil Bicicletas Catalog Scraper](https://apify.com/maximedupre/bikeshop): Collect a Brazil bicycle catalog with BRL prices, stock, brands, and specifications.
- [Cobasi Pet Product Catalog Scraper (Brazil)](https://apify.com/jungle_synthesizer/cobasi-br-pet-product-catalog-scraper): Compare another public Cobasi Brazil catalog with product prices, brands, ratings, and Clube Cobasi discounts.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

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

Enter a positive number to stop after that many products. Leave it empty to return all available products until the source is exhausted. The starter value is only for this form. It does not change runs that omit this field.

## Actor input object example

```json
{
  "maxItems": 100
}
```

# Actor output Schema

## `defaultDataset` (type: `string`):

The default dataset with one row for each public Cobasi product saved in the run.

# 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 = {
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/cobasi").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 = { "maxItems": 100 }

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/cobasi").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "maxItems": 100
}' |
apify call maximedupre/cobasi --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/cobasi"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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