# Petfinder Scraper (Pay Per Result) (`123webdata/petfinder-scraper`)

A scraper for Petfinder to extract pet listing details, descriptions, and contact information from both search and profile pages. Useful for dataset creation, analytics, and integrations. Pricing: $0.005/result. 10 results on free trial.

- **URL**: https://beta-securitybyobscurity.apify.com/123webdata/petfinder-scraper.md
- **Developed by:** [Milán Vásárhelyi](https://beta-securitybyobscurity.apify.com/123webdata) (community)
- **Categories:** AI, E-commerce, Other
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$5.00 / 1,000 results

This Actor is paid per result. You are not charged for the Apify platform usage, but only a fixed price for dataset items the Actor outputs.

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

# README

## Petfinder.com Scraper

This actor scrapes pet adoption listings from [Petfinder.com](https://www.petfinder.com/), a popular online pet adoption platform.

### Issues and feature requests

If you encounter any issue, or you'd like us to change or add anything, please open an issue in the actor page or write to us directly at hello@123webdata.com

### Output Example (simplified)

The actor provides a convenient overview mode that displays the most important pet listing information in a tabular format. Here's an example of how the data looks in the overview mode:

| Image | Product URL | Product Name | Current Price | Regular Price | Currency | Description | Scraped At |
|-------|-------|-------|-------|-------|-------|-------|-------|
| <img src="https://dl5zpyw5k3jeb.cloudfront.net/photos/pets/77075178/1/?bust=1752668597" style="max-width: 100px; max-height: 100px; object-fit: contain;"> | https://www.petfinder.com/cat/penguin-77075178/ny/new-woodstock/wayward-paws-inc-ny743/ | Adopt Penguin on Petfinder | 0.00 | 0 |  | Penguin is an adoptable Cat... | 2025-07-21 |
| <img src="https://dl5zpyw5k3jeb.cloudfront.net/photos/pets/77289456/1/?bust=1752987593" style="max-width: 100px; max-height: 100px; object-fit: contain;"> | https://www.petfinder.com/cat/virgo-77289456/ny/new-woodstock/wayward-paws-inc-ny743/ | Adopt VIRGO on Petfinder | 0.00 | 0 |  | VIRGO is an adoptable Cat -... | 2025-07-21 |
| <img src="https://dl5zpyw5k3jeb.cloudfront.net/photos/pets/76998003/1/?bust=1753069042" style="max-width: 100px; max-height: 100px; object-fit: contain;"> | https://www.petfinder.com/cat/rainy-76998003/ny/utica/traveling-tails-ragamuffin-rescue-inc-ny1652/ | Adopt Rainy on Petfinder | 0.00 | 0 |  | Rainy is an adoptable Cat -... | 2025-07-21 |

### Features

- Scrapes detailed pet adoption information from Petfinder.com listings
- Extracts data from both individual pet URLs and category pages
- Follows pagination links on category pages (optional)
- Supports various pet categories with specific fields like breed, age, and location

### Input

The actor accepts the following input parameters:

| Field | Type | Description |
|-------|------|-------------|
| `productUrls` | array | List of Petfinder.com pet URLs to scrape |
| `categoryUrls` | array | List of Petfinder.com category URLs to scrape |
| `maxResultsPerScrape` | integer | Maximum number of results to extract (default: 1000) |
| `usePagination` | boolean | Whether to follow pagination links on category pages (default: true) |

### Output Example (full)

The actor outputs data in the following structure:

```json
{
	"url": "https://www.petfinder.com/cat/penguin-77075178/ny/new-woodstock/wayward-paws-inc-ny743/",
	"name": "Adopt Penguin on Petfinder",
	"price": 0,
	"regular_price": 0,
	"currency": null,
	"in_stock": null,
	"sku": "77075178",
	"mpn": null,
	"gtin": null,
	"brand": null,
	"breadcrumbs": [],
	"main_image": "https://dl5zpyw5k3jeb.cloudfront.net/photos/pets/77075178/1/?bust=1752668597",
	"images": [],
	"description": "Penguin is an adoptable Cat - Domestic Short Hair searching for a forever family near New Woodstock, NY. Use Petfinder to find adoptable pets in your area.",
	"color": null,
	"size": null,
	"material": null,
	"style": null,
	"features": [],
	"attributes": {},
	"rating_value": null,
	"review_count": null,
	"canonical_url": "https://www.petfinder.com/cat/penguin-77075178/ny/new-woodstock/wayward-paws-inc-ny743/",
	"scraped_at": "2025-07-21T12:10:23.269Z"
}
```

### Use Cases

- Monitoring pet adoption listings
- Analyzing pet availability trends by location
- Research on adoption patterns
- Integration with pet adoption platforms and services

# Actor input Schema

## `productUrls` (type: `array`):

List of Petfinder.com pet listing URLs to scrape.

## `categoryUrls` (type: `array`):

List of Petfinder.com category URLs to scrape. The scraper will extract all pet listings from these pages.

## `maxResultsPerScrape` (type: `integer`):

Maximum number of results to extract. Default is 20.

## `usePagination` (type: `boolean`):

Whether to follow pagination links on category pages.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.petfinder.com/cat/penguin-77075178/ny/new-woodstock/wayward-paws-inc-ny743/"
  ],
  "categoryUrls": [
    "https://www.petfinder.com/search/cats-for-adoption/us/new-york/"
  ],
  "maxResultsPerScrape": 20,
  "usePagination": 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 = {
    "productUrls": [
        "https://www.petfinder.com/cat/penguin-77075178/ny/new-woodstock/wayward-paws-inc-ny743/"
    ],
    "categoryUrls": [
        "https://www.petfinder.com/search/cats-for-adoption/us/new-york/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("123webdata/petfinder-scraper").call(input);

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

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

```

## Python example

```python
from apify_client import ApifyClient

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

# Prepare the Actor input
run_input = {
    "productUrls": ["https://www.petfinder.com/cat/penguin-77075178/ny/new-woodstock/wayward-paws-inc-ny743/"],
    "categoryUrls": ["https://www.petfinder.com/search/cats-for-adoption/us/new-york/"],
}

# Run the Actor and wait for it to finish
run = client.actor("123webdata/petfinder-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "productUrls": [
    "https://www.petfinder.com/cat/penguin-77075178/ny/new-woodstock/wayward-paws-inc-ny743/"
  ],
  "categoryUrls": [
    "https://www.petfinder.com/search/cats-for-adoption/us/new-york/"
  ]
}' |
apify call 123webdata/petfinder-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Petfinder Scraper (Pay Per Result)",
        "description": "A scraper for Petfinder to extract pet listing details, descriptions, and contact information from both search and profile pages. Useful for dataset creation, analytics, and integrations. Pricing: $0.005/result. 10 results on free trial.",
        "version": "0.1",
        "x-build-id": "4cJcXIcngKcORvDFn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/123webdata~petfinder-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-123webdata-petfinder-scraper",
                "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/123webdata~petfinder-scraper/runs": {
            "post": {
                "operationId": "runs-sync-123webdata-petfinder-scraper",
                "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/123webdata~petfinder-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-123webdata-petfinder-scraper",
                "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",
                "properties": {
                    "productUrls": {
                        "title": "Pet URLs",
                        "type": "array",
                        "description": "List of Petfinder.com pet listing URLs to scrape.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "categoryUrls": {
                        "title": "Category URLs",
                        "type": "array",
                        "description": "List of Petfinder.com category URLs to scrape. The scraper will extract all pet listings from these pages.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResultsPerScrape": {
                        "title": "Maximum Results",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum number of results to extract. Default is 20.",
                        "default": 20
                    },
                    "usePagination": {
                        "title": "Use Pagination",
                        "type": "boolean",
                        "description": "Whether to follow pagination links on category pages.",
                        "default": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
