# Pixabay Image Scraper (`parsebird/pixabay-image-scraper`) Actor

Extract free stock images from Pixabay: titles, tags, dimensions, download URLs, and uploader details. Search by keyword and location, or paste a Pixabay search URL.

- **URL**: https://apify.com/parsebird/pixabay-image-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** Automation, Developer tools, Integrations
- **Stats:** 2 total users, 1 monthly users, 88.9% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.89 / 1,000 images

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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 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

### Pixabay Image Scraper

Extract free stock images from [Pixabay](https://pixabay.com) by keyword or search URL. The **Pixabay Image Scraper** returns clean, structured image data — titles, tags, dimensions, download links, engagement metrics, and full uploader details — ready for design tools, content pipelines, or dataset building.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Search by keyword with optional location context, or paste a Pixabay search URL, and get every image's download links, tags, engagement metrics, and uploader attribution in one structured record.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Apify Actor: parsebird/pixabay-image-scraper. Scrapes free stock images from Pixabay (pixabay.com). Call via ApifyClient: client.actor("parsebird/pixabay-image-scraper").call(run_input={"keyword": "nature", "results_wanted": 20}). Also accepts location (extra search context, e.g. a city or country), url/startUrl (a full Pixabay search URL, startUrl takes priority), max_pages, and proxyConfiguration. Returns per image: id, mediaType, mediaDescriptiveType, width, height, uploadDate, name, title, alt, description, pageUrl, imageUrl_small, imageUrl_large, downloadUrl, tags, likeCount, commentCount, viewCount, downloadCount, isEditorsChoice, isAiGenerated, nsfw, vector, isLowQuality, qualityStatus, username, profileUrl, user_id, user_avatarSrc, user_isAvailableForHire, user_isActive, user_donation_paypal, canvaRetouchUrl. Full API spec: https://apify.com/parsebird/pixabay-image-scraper/api. Get your token: https://console.apify.com/settings/integrations.
```

### What does Pixabay Image Scraper do?

This actor reads the same structured image data Pixabay's own search page uses to render results — no manual clicking, no guessing at CSS selectors. You give it a keyword, an optional location, or a Pixabay search URL, and it returns every matching image with dimensions, tags, engagement metrics, and download links.

- 🔍 **Keyword and location search** — search a plain keyword, or add a location for more specific visual research (e.g. `"cherry blossom"` + `"Tokyo"`).
- 🔗 **Direct search URLs** — paste a Pixabay search URL (`url` or `startUrl`, which takes priority) to preserve an exact search you've already built in the browser.
- 🖼️ **Full image variants** — small and large preview URLs plus the direct download link for every image.
- 📊 **Engagement metrics** — likes, comments, views, and downloads for every result.
- 🏷️ **Rich classification** — media type (photo/illustration/vector), editor's-choice and AI-generated flags, quality status.
- 👤 **Full uploader attribution** — username, profile URL, avatar, hire availability, and donation links when provided.

### What data can you extract from Pixabay?

| Field | Description |
|-------|-------------|
| `title` / `alt` / `description` / `tags` | Image copy and Pixabay's own comma-separated tags |
| `mediaType` / `mediaDescriptiveType` | Photo, illustration, or vector, and a human-readable category |
| `width` / `height` | Image dimensions |
| `imageUrl_small` / `imageUrl_large` / `downloadUrl` | Preview and full-resolution download links |
| `likeCount` / `commentCount` / `viewCount` / `downloadCount` | Engagement metrics |
| `isEditorsChoice` / `isAiGenerated` / `nsfw` / `vector` / `isLowQuality` | Classification flags |
| `username` / `profileUrl` / `user_avatarSrc` | Uploader attribution |
| `user_donation_paypal` | Uploader's donation link, when provided |

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `keyword` | string | No | — | Search term such as `nature`, `sunset`, or `city skyline` |
| `location` | string | No | — | Additional search context such as `Tokyo` or `Pakistan` |
| `url` | string | No | — | Full Pixabay image search URL; takes priority over keyword |
| `startUrl` | string | No | — | Alternate full Pixabay search URL; takes priority over `url` |
| `results_wanted` | integer | No | `20` | Maximum number of unique images to save |
| `max_pages` | integer | No | `999` | Maximum number of result pages to process |
| `proxyConfiguration` | object | No | Residential proxy on | Apify Proxy settings — residential proxy is required and on by default (Pixabay blocks Apify's datacenter IPs) |

### Output example

```json
{
  "id": 7133867,
  "mediaType": "photo",
  "mediaDescriptiveType": "photo",
  "width": 3150,
  "height": 2100,
  "uploadDate": "2026-06-02T10:22:48.283309",
  "name": "Sunset, Sand, Beach, Islands",
  "title": "Download free HD stock image of Sunset Sand",
  "alt": "Free Sunset Sand photo and picture",
  "pageUrl": "https://pixabay.com/photos/sunset-sand-beach-islands-leaf-7133867/",
  "imageUrl_small": "https://cdn.pixabay.com/photo/2022/04/15/07/58/sunset-7133867_640.jpg",
  "imageUrl_large": "https://cdn.pixabay.com/photo/2022/04/15/07/58/sunset-7133867_1280.jpg",
  "downloadUrl": "https://pixabay.com/images/download/x-7133867_1920.jpg",
  "tags": "Sunset, Sand, Beach",
  "likeCount": 875,
  "commentCount": 144,
  "viewCount": 415881,
  "downloadCount": 376185,
  "isEditorsChoice": true,
  "isAiGenerated": false,
  "username": "Kanenori",
  "profileUrl": "https://pixabay.com/users/kanenori-4749850/",
  "user_id": 4749850
}
```

Download results as **JSON, CSV, Excel, HTML, or XML** directly from the Apify Console, or fetch them via the [Apify API](https://docs.apify.com/api/v2) / [dataset endpoint](https://apify.com/parsebird/pixabay-image-scraper/api).

### Use cases

- **Design and content pipelines** — pull curated, license-clear stock images by keyword directly into a CMS, design tool, or asset library.
- **Dataset building** — build labeled image datasets with tags and dimensions for computer vision or ML projects.
- **Website and blog imagery** — automate sourcing relevant images for articles, landing pages, or social posts by topic and location.
- **Uploader/creator discovery** — surface active, high-output Pixabay contributors by keyword niche.
- **AI-generated content auditing** — use the `isAiGenerated` flag to filter or separate AI-generated results from photography.

### How to scrape Pixabay images

1. **Set your search** — enter a Keyword (and optional Location), or paste a Pixabay search URL into the URL/Start URL field.
2. **Set limits** — Results Wanted caps total images returned; Max Pages controls how deep pagination goes.
3. **Leave Proxy Configuration on** — residential proxy is enabled by default and required for reliable access.
4. **Run the actor** — click **Start** in the Apify Console, or trigger it via the [API](https://docs.apify.com/api/v2) or on a [schedule](https://docs.apify.com/platform/schedules).
5. **Get your data** — download the dataset as JSON/CSV/Excel, or pull it via the API.

### How much does it cost to scrape Pixabay?

This actor uses [Pay-Per-Event (PPE)](https://docs.apify.com/platform/actors/publishing/monetize#pay-per-event-pricing) pricing — you're charged per image extracted, not per compute unit.

| Event | Price per event | Price per 1,000 |
|-------|----------------|-----------------|
| `image-scraped` (Free plan) | $0.00099 | **$0.99** |
| `image-scraped` (Bronze / Silver / Gold plans) | $0.00089 | **$0.89** |

A run collecting 500 images costs roughly $0.45–$0.50 depending on your Apify plan. All Apify accounts include a [free trial](https://apify.com/pricing) with credits to try the actor before committing to a paid plan.

### FAQ

**Why is a proxy required?**
Pixabay blocks Apify's datacenter IPs via Cloudflare, even from a real browser. A residential proxy is enabled by default in Proxy Configuration to keep runs reliable — turning it off will cause runs to fail. Cloudflare's challenge is intermittent even through a residential proxy, so the actor automatically retries with a fresh session and proxy IP if a request is blocked.

**How does `location` combine with `keyword`?**
The two are joined into a single search phrase (e.g. `"cherry blossom" + "Tokyo"` → searches `cherry blossom Tokyo`), matching how you'd refine a search directly on Pixabay.

**Does this actor download the actual image files?**
No — it returns the `downloadUrl` and preview image URLs so you can download files yourself, on your own schedule and infrastructure.

**Does this actor support scheduling and integrations?**
Yes. Use [Apify Schedules](https://docs.apify.com/platform/schedules) to run it daily or weekly, connect it to [Zapier, Make, or Slack](https://apify.com/integrations), or call it through the [Apify API](https://docs.apify.com/api/v2) from your own backend.

**What are the limitations of this actor?**
⚠️

- Results reflect Pixabay's public image search only (photos, illustrations, and vectors — not videos or music)
- Very obscure keywords with zero matches naturally return no results

### Is it legal to scrape Pixabay?

Yes. This actor only accesses publicly available image listings that Pixabay makes visible to any visitor. It does not bypass login walls or access private accounts. Scraping publicly available data is generally considered legal — see [Apify's overview of web scraping legality](https://www.apify.com/is-web-scraping-legal) for more detail. Users are responsible for ensuring their use of the collected data complies with applicable laws and [Pixabay's Terms of Service](https://pixabay.com/service/terms/), including attribution requirements where they apply.

### Python and JavaScript usage

**Python** ([apify-client](https://docs.apify.com/api/client/python/)):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run_input = {
    "keyword": "nature",
    "results_wanted": 50,
}

run = client.actor("parsebird/pixabay-image-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["downloadUrl"])
```

**JavaScript** ([apify-client](https://docs.apify.com/api/client/js/)):

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const input = {
    keyword: 'nature',
    results_wanted: 50,
};

const run = await client.actor('parsebird/pixabay-image-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Related Actors

- [Pexels Stock Image Scraper](https://apify.com/parsebird/pexels-stock-image-scraper) — free stock photos from Pexels
- [Unsplash Image Scraper](https://apify.com/parsebird/unsplash-image-scraper) — free stock photos from Unsplash
- [Pinterest Search Scraper](https://apify.com/parsebird/pinterest-search-scraper) — image search results from Pinterest
- [Pinterest Image Downloader](https://apify.com/parsebird/pinterest-image-downloader) — bulk-download Pinterest images

Browse the full catalog on the [ParseBird Apify Store page](https://apify.com/parsebird).

# Actor input Schema

## `keyword` (type: `string`):

Search term such as nature, sunset, or city skyline.

## `location` (type: `string`):

Additional search context such as Tokyo or Pakistan.

## `url` (type: `string`):

Full Pixabay image search URL; takes priority over keyword input.

## `startUrl` (type: `string`):

Alternate full Pixabay search URL; takes priority over url when provided.

## `results_wanted` (type: `integer`):

Maximum number of unique images to save.

## `max_pages` (type: `integer`):

Maximum number of result pages to process.

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

Apify Proxy settings. Pixabay blocks Apify's datacenter IPs via Cloudflare, so a residential proxy is required for reliable access — this is on by default.

## Actor input object example

```json
{
  "keyword": "nature",
  "results_wanted": 20,
  "max_pages": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "keyword": "nature",
    "results_wanted": 20,
    "max_pages": 2,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/pixabay-image-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 = {
    "keyword": "nature",
    "results_wanted": 20,
    "max_pages": 2,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/pixabay-image-scraper").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 '{
  "keyword": "nature",
  "results_wanted": 20,
  "max_pages": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call parsebird/pixabay-image-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/hVsYU4X5PYpJQCcEL/builds/0ZI5CBKrW6kUtVMDX/openapi.json
