# Fiverr Gigs Scraper: Prices, Sellers & Reviews, No Login (`cliqtomedia/fiverr-scraper`) Actor

Scrape Fiverr gigs, sellers and true starting prices to compare competitors and price your services. Search by query, category or URL. No login.

- **URL**: https://apify.com/cliqtomedia/fiverr-scraper.md
- **Developed by:** [Cliqto Media](https://apify.com/cliqtomedia) (community)
- **Categories:** Business
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.26 / 1,000 saved gigs

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

Fiverr Gigs Scraper reads public Fiverr search, category, gig and seller pages and saves gigs with seller, seller level, rating, reviews and the cheapest package price. Add one query such as `logo design` and set `maxItems` to 10: the run took 2–27 seconds in our tests, needs no login and costs about $0.02 on the Free plan.

![Fiverr Gigs Scraper: from a search query to gig rows with starting price, seller level and rating, exported as JSON or CSV](https://api.apify.com/v2/key-value-stores/9pFVxtE5cTOwaQoz7/records/fiverr-banner-20261106.png)

### Table of contents

- [What it does](#what-it-does)
- [How it works](#how-it-works)
- [Quick start](#quick-start)
- [Use cases](#use-cases)
- [Input](#input)
- [Output](#output)
- [Pricing](#pricing)
- [Limits](#limits)
- [API, export and integrations](#api-export-and-integrations)
- [Troubleshooting](#troubleshooting)
- [FAQ](#faq)
- [Related Actors](#related-actors)
- [Support](#support)

### What it does

This Fiverr scraper turns public gig listings into a table you can sort and export. Each gig row has `title`, `seller`, `sellerLevel`, `rating`, `reviewsCount`, `startingPrice` and `url`.

A Fiverr search card often shows the second package, not the cheapest one. So one row has two prices. `listedPrice` is the price on the card. `startingPrice` is the cheapest package, and the Actor opens the gig page when the card does not prove it. If the price stays unproven, `startingPrice` is `null`, never a guess.

You can also add gig details, reviews and seller profiles, watch for new gigs and price changes, or list Fiverr URLs from its public sitemaps.

The Actor reads only public pages. It does not log in and does not place orders. It does not collect emails or phone numbers.

#### Good fit

- You sell on Fiverr and want to compare your price with similar gigs.
- You run an agency and want a list of sellers by category, level and country.
- You want a Fiverr gig price overview for one service, with percentiles per query.
- You want to know each week which gigs are new and which changed their price.

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

### How it works

1. The Actor opens the public Fiverr pages for your queries, categories or links.
2. It reads each gig, checks the cheapest package and applies your filters.
3. It saves gig rows to the Dataset, and writes the run status to `RUN_SUMMARY` and price statistics to `MARKET_SUMMARY`.

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

### Quick start

[![Input form with the Search queries field set to logo design in box 1, the Maximum rows field set to 10 in box 2 and the closed sections in box 3](https://api.apify.com/v2/key-value-stores/9pFVxtE5cTOwaQoz7/records/quick-start-form-20261106.png)](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)

1. Open the input form. **Search queries** already has `logo design` (box 1). Change it to your service.
2. Check **Maximum rows** (box 2). The form suggests 10, and this field controls your cost.
3. Keep the other sections closed (box 3). Their defaults work for a first run.
4. Click **Start**.
5. Open **Output**, then **Overview**. Compare `sellerLevel`, `rating`, `reviewsCount` and `startingPrice` (box 5).

   [![Output table in the Overview view, with box 5 on the Seller Level, Rating, Reviews Count and Starting Price columns](https://api.apify.com/v2/key-value-stores/9pFVxtE5cTOwaQoz7/records/output-table-20261106.png)](https://api.apify.com/v2/key-value-stores/9pFVxtE5cTOwaQoz7/records/output-table-20261106.png)

Expected result: 10 gig rows with a seller, a rating and a starting price in USD.

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

### Use cases

| Buyer job | Input path | Output entity | Key fields | Next integration |
| --- | --- | --- | --- | --- |
| Price my service against similar gigs | `queries`, `minReviews` | Gig row, market summary | `startingPrice`, `rating`, `reviewsCount`, `sellerLevel` | Export CSV to a spreadsheet |
| Build a list of strong sellers in a category | `categoryUrls`, `sellerLevels`, `includeSellerProfile` | Gig row, seller row | `seller`, `level`, `country`, `ratingCount`, `skills` | Export JSON to your CRM or database |
| Read what buyers say about a gig | `startUrls`, `maxReviewsPerGig` | Gig row with reviews | `reviewsSummary`, `topReviews`, `packages` | API read into your analysis tool |
| Get new gigs and price changes on a schedule | `queries`, `onlyNew`, `stateName` | Gig row | `changeType`, `startingPrice`, `url` | Apify schedule, Slack or Notion summary |
| List Fiverr URLs for a later run | `mode: sitemap`, `sitemapType` | Sitemap row | `url`, `type`, `slug`, `lastmod` | Use the URLs in `startUrls` |

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

### Input

#### Input fields

In search mode, add at least one of `queries`, `categoryUrls` or `startUrls`. An empty input stops with status `INVALID_INPUT` and no rows. Repeated queries are removed before the run. A gig found twice is saved once.

| Field | Plain name | Type | Required | Default / prefill | Allowed values | Effect | Example | Recommendation |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| `mode` | What to collect | string | no | `search` | `search`, `sitemap` | Gigs or a list of URLs | `search` | Keep `search` for gigs |
| `queries` | Search queries | array of strings | one source | prefill `logo design` | up to 100, each up to 200 characters | Searches Fiverr | `["logo design"]` | Use what a buyer would type |
| `categoryUrls` | Categories | array of strings | one source | empty | up to 100 links or category paths | Reads a category list | `["graphics-design/creative-logo-design"]` | Use a subcategory. A top-level category returns `not_found` |
| `startUrls` | Fiverr URLs | array of URL objects | one source | empty | up to 1000 `www.fiverr.com` links, or a text file up to 1 MB | Reads search, category, gig or seller links | `[{"url":"https://www.fiverr.com/categories/graphics-design/creative-logo-design"}]` | Mix link types freely |
| `maxItems` | Maximum rows | integer | no | default 100, prefill 10 | 1–2000 | Limit for the whole run | `10` | Your main cost control |
| `maxItemsPerSearch` | Maximum rows per query or URL | integer | no | 0 | 0–2000 | Limit per source, 0 means none | `50` | Use with many queries |
| `maxPagesPerSearch` | Maximum pages per query | integer | no | 20 | 1–21 | Depth of one search | `5` | Lower it for top results only |
| `splitLargeSearches` | Go beyond one result list | boolean | no | `false` | `true`, `false` | Repeats the query per seller level | `true` | Use when one list runs out |
| `sortBy` | Sort | string | no | `auto` | `auto`, `rating`, `new`, `best_selling`, `price_asc`, `price_desc` | Order of the list | `best_selling` | Price sort orders only collected rows |
| `sellerLevels` | Seller levels | array | no | empty | `level_one_seller`, `level_two_seller`, `top_rated_seller` | Keeps these levels | `["top_rated_seller"]` | Fiverr applies it |
| `sellerCountries` | Seller countries | array of strings | no | empty | two-letter codes, up to 50 | Keeps these countries | `["US","DE"]` | Fiverr applies it |
| `sellerLanguages` | Seller languages | array of strings | no | empty | two-letter codes, up to 50 | Keeps these languages | `["en"]` | Fiverr applies it |
| `proOnly`, `onlineOnly`, `agencyOnly`, `hourlyOnly` | Fiverr Pro only, Sellers online now, Agencies only, Hourly offers only | boolean | no | `false` | `true`, `false` | Fiverr applies each filter | `true` | Turn on only what you need |
| `maxDeliveryDays` | Delivery within | string | no | `any` | `any`, `1`, `3`, `7` | Maximum delivery time | `"3"` | Text value, not a number |
| `facets` | Other Fiverr filters | array of strings | no | empty | `key:value`, up to 30 | Passes a filter from a Fiverr page | `["style:modern"]` | Copy the key from the page link |
| `minPrice`, `maxPrice` | Minimum and maximum starting price, USD | number | no | none | 0 or more, `minPrice` not above `maxPrice` | Compares `startingPrice` | `50` | A row with no proven price is left out |
| `minRating` | Minimum rating | number | no | none | 0–5 | Skips lower ratings and gigs with no rating | `4.8` | Checked after reading |
| `minReviews` | Minimum reviews | integer | no | none | 0 or more | Skips gigs with fewer reviews | `100` | Checked after reading |
| `excludePromoted` | Exclude promoted gigs | boolean | no | `false` | `true`, `false` | Skips paid placements | `true` | Good for market prices |
| `fiverrChoiceOnly`, `offersConsultation`, `hasSubscription` | Fiverr's Choice only, Offers a consultation, Offers a subscription | boolean | no | `false` | `true`, `false` | Keeps gigs with this option | `true` | Checked after reading |
| `excludeWords` | Exclude words in title | array of strings | no | empty | up to 100 whole words | Skips matching titles | `["template"]` | Case does not matter |
| `exactStartingPrice` | Prove the starting price | boolean | no | `true` | `true`, `false` | Opens a gig page when the card does not prove the price | `false` | Off is cheaper, but more `startingPrice` values stay null |
| `includeDetails` | Include gig details | boolean | no | `false` | `true`, `false` | Adds description, packages, FAQ, gallery, tags, portfolio and first 5 reviews | `true` | Extra charge per gig |
| `descriptionMaxLength` | Description length limit | integer | no | 0 | 0 or more | Cuts `description`, 0 keeps it all | `500` | Use with details |
| `maxReviewsPerGig` | Reviews per gig | integer | no | 0 | 0–500 | Adds reviews to `topReviews` | `20` | Turns on details |
| `reviewsSort` | Reviews order | string | no | `relevant` | `relevant`, `recent` | Order of collected reviews | `recent` | Use `recent` with a date |
| `reviewsNewerThan` | Reviews newer than | string | no | none | a date or a period | Keeps newer reviews | `30 days` | Use with `recent` |
| `includeSellerProfile` | Add seller profiles | boolean | no | `false` | `true`, `false` | Adds one seller row per seller | `true` | Extra charge per seller row |
| `includeMarketSummary` | Save a market summary | boolean | no | `true` | `true`, `false` | Writes `MARKET_SUMMARY` | `true` | Free |
| `onlyNew` | Only new gigs and price changes | boolean | no | `false` | `true`, `false` | Saves only new and changed gigs | `true` | For repeat runs |
| `stateName` | Monitoring name | string | no | named from your input | letters, digits, hyphens, up to 40 | Separates monitoring lists | `logo-weekly` | Set it for clear lists |
| `resetState` | Forget earlier runs | boolean | no | `false` | `true`, `false` | Starts monitoring again | `true` | Use once, then turn off |
| `sitemapType` | Sitemap type | string | no | `gigs` | `gigs`, `categories`, `sellers`, `tags` | Which public sitemap to read | `categories` | Only with `mode: sitemap` |
| `sitemapUrlContains` | URL contains | string | no | none | text | Keeps matching URLs | `logo` | Only with `mode: sitemap` |
| `sitemapSince` | Changed since | string | no | none | a date | Keeps newer URLs | `2026-01-31` | Only with `mode: sitemap` |
| `maxConcurrency` | Parallel requests | integer | no | 5 | 1–5 | Requests at once | `2` | Lower it if the run reports rate limits |
| `maxRequestRetries` | Retries per request | integer | no | 4 | 0–8 | Attempts after a failure | `4` | Keep the default |
| `deliveryConnector` | Send results to (optional) | string | no | none | your Apify MCP connector | Posts a short summary | your connector | Optional |
| `deliveryTarget` | Notion page or channel (optional) | string | no | none | Notion page link or Slack channel ID | Where the summary goes | your channel ID | Optional |

The tested maximum is 2,000 rows per run. Run time matters too: see [Limits](#limits).

#### Interacting settings

| When | Input A | Input B | Effective behavior | Example | Cost/result effect |
| --- | --- | --- | --- | --- | --- |
| Many sources | `maxItems` | `maxItemsPerSearch` | Both apply. The run stops at `maxItems` | 3 queries, 30 and 10 | 10 rows from each query |
| One list ends early | `maxPagesPerSearch` | `splitLargeSearches` | Repeats the query per seller level | `true` | More rows and more pages paid |
| Price filter | `exactStartingPrice` | `minPrice`, `maxPrice` | The filter uses `startingPrice`. With proof off, more rows have null and are left out | `exactStartingPrice: false`, `maxPrice: 50` | Fewer gig pages, fewer rows |
| Reviews | `maxReviewsPerGig` | `includeDetails` | More than 0 reviews turns on details | `maxReviewsPerGig: 20` | Details fee plus a fee per review |
| Seller rows | `includeSellerProfile` | `maxItems` | Seller rows count toward `maxItems` | `maxItems: 10` | Fewer gig rows in the same limit |
| Monitoring list | `onlyNew` | `stateName`, `resetState` | Each name has its own list. Reset starts it empty | `logo-weekly` | First run saves all gigs as `new` |
| Strict filters | `minRating`, `minReviews` | `maxItems` | The run reads up to 20 cards per requested row, then stops | `maxItems: 10`, about 200 cards | Pages are paid, gigs are not |
| Sitemap mode | `mode: sitemap` | search fields | Search sources and filters are not used | `sitemapType: tags` | Paid per sitemap row and page |

#### Input examples

##### First price check

```json
{
  "queries": ["logo design"],
  "maxItems": 10
}
```

Expected behavior: the Actor searches Fiverr and saves the first 10 gigs.
Expected output: gig rows with `seller`, `sellerLevel`, `rating`, `reviewsCount` and `startingPrice`.
Limit or cost note: about $0.02 on the Free plan.

##### Top sellers under a price

```json
{
  "queries": ["wordpress website"],
  "sellerLevels": ["top_rated_seller"],
  "maxPrice": 200,
  "minReviews": 50,
  "maxItems": 50
}
```

Expected behavior: Fiverr filters by level, and the Actor checks price and reviews.
Expected output: up to 50 gig rows with `startingPrice` of 200 or less.
Limit or cost note: rows dropped by a filter have no gig fee, but the pages read to find them are paid.

##### Weekly watch for changes

```json
{
  "queries": ["voice over"],
  "onlyNew": true,
  "stateName": "voice-weekly",
  "maxItems": 100
}
```

Expected behavior: the first run saves all gigs as `new`. Later runs save only new gigs and price changes.
Expected output: gig rows with `changeType` set to `new` or `price_changed`.
Limit or cost note: gigs with no change have no gig fee. The pages read to check them are paid.

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

### Output

#### Output fields

The main fields are below. The **Gig details**, **Sellers** and **Sitemap URLs** views show the extra fields for those rows. **All fields** shows every field.

| Field | Meaning | Type | Can be empty? | Example / enum | Source / notes |
| --- | --- | --- | --- | --- | --- |
| `rowType` | Kind of row | string | no | `gig`, `seller`, `sitemap` | Set by the Actor |
| `gigId` | Fiverr gig ID | string | no on gig rows | `348226842` | Fiverr |
| `title` | Gig title | string | yes | `create a professional minimalist business logo design and branding` | Fiverr |
| `seller` | Seller username | string | yes | `glenmoore756` | Fiverr |
| `sellerLevel` | Seller level | string | yes | `level_two_seller`, `top_rated_seller` | Fiverr value, no conversion. Null means Fiverr shows no level |
| `rating` | Gig rating | number | yes | `4.99` | Null means no rating. On a direct gig link Fiverr gives a rounded value |
| `reviewsCount` | Number of gig reviews | integer | yes | `79` | Fiverr |
| `startingPrice` | Cheapest package, USD | number | yes | `45` | Null means the price is not proven |
| `startingPriceSource` | How the price was proven | string | yes | `search_card`, `gig_page`, `unverified` | Set by the Actor |
| `listedPrice` | Price on the search card, USD | number | yes | `100` | May be the second package |
| `listedPackage` | Package of the card price | integer | yes | `2` | 1 is the cheapest |
| `deliveryDays` | Delivery time of the card package | integer | yes | `3` | Fiverr |
| `category`, `subCategory` | Fiverr category names | string | yes | `Graphics & Design`, `Logo Design` | Fiverr |
| `isPromoted` | Paid placement | boolean | yes | `true` | Fiverr |
| `searchPosition` | Place in the result list | integer | yes | `1` | Null for a direct link |
| `changeType` | Change since the last run | string | yes | `new`, `price_changed` | Only with `onlyNew`, otherwise null |
| `description`, `packages`, `faq`, `tags` | Gig details | mixed | yes | see the Gig details view | Only with details |
| `reviewsSummary`, `topReviews` | Rating summary and reviews | object, array | yes | see the Gig details view | Only with details |
| `displayName`, `level`, `country`, `skills`, `languages`, `responseTimeHours` | Seller profile | mixed | yes | see the Sellers view | Only on seller rows |
| `url` | Page link | string | no | `https://www.fiverr.com/glenmoore756/design-professional-3d-minimalist-modern-business-logo` | Fiverr |
| `source`, `sourceUrl` | Site and page the row came from | string | no | `fiverr.com` | Set by the Actor |
| `fetchedAt` | Time of reading | string | no | `2026-11-06T13:34:39.487Z` | UTC |

#### Output entities and surfaces

| Situation | Dataset/API/KVS/live view | Result shape | User action |
| --- | --- | --- | --- |
| Normal item | Dataset, view **Overview** | One row per gig, seller or sitemap URL | Sort, export or read by API |
| Run status | Key-value store `RUN_SUMMARY` | `status`, `failed`, `partial`, `message`, `rows`, `counts`, `sources`, `warnings` | Read `status` and `message` first |
| Price statistics | Key-value store `MARKET_SUMMARY` | Per query: `min`, `p10`–`p90`, `max`, seller levels, countries | Counts only the rows from this run, not all of Fiverr |
| Nothing on Fiverr | `RUN_SUMMARY`, empty Dataset | `status: NOT_FOUND`, the run succeeds | Check the query or link |
| Nothing passed your filters | `RUN_SUMMARY`, empty Dataset | `status: NO_MATCHES`, the run succeeds | Loosen the filters |
| No changes since last run | `RUN_SUMMARY`, empty Dataset | `status: NO_CHANGES`, the run succeeds | Nothing to do |
| Partial result | Dataset and `RUN_SUMMARY` | `status: PARTIAL`, `DEADLINE` or `CHARGE_LIMIT`, `partial: true`, rows are kept | Read `message`, then raise the timeout or limit |
| Technical failure | `RUN_SUMMARY` | `status: SOURCE_ERROR`, `sources` names the reason, the run fails when there are no rows | Run again later. This does not mean Fiverr has no gigs |
| Wrong input | `RUN_SUMMARY` | `status: INVALID_INPUT`, the run fails | Fix the field named in `message` |

#### Output example

Input: the First price check example. This row is trimmed.

```json
{
  "rowType": "gig",
  "gigId": "348226842",
  "title": "create a professional minimalist business logo design and branding",
  "seller": "glenmoore756",
  "sellerLevel": "level_two_seller",
  "rating": 4.99,
  "reviewsCount": 79,
  "startingPrice": 45,
  "startingPriceSource": "gig_page",
  "listedPrice": 100,
  "listedPackage": 2,
  "currency": "USD",
  "changeType": null,
  "hourlyRate": null,
  "url": "https://www.fiverr.com/glenmoore756/design-professional-3d-minimalist-modern-business-logo",
  "source": "fiverr.com",
  "fetchedAt": "2026-11-06T13:34:39.487Z"
}
```

Here the search card showed package 2 at $100, and the gig page proved the cheapest package at $45. `null` means the value is not known or does not apply. It never means 0. Fiverr changes its result order between requests, so two runs of the same query can return different gigs.

#### Send results to Slack or Notion

Pick your connector in the optional `deliveryConnector` field. After the run saves its data, the Actor posts a short summary (up to 25 rows and a link to the full dataset) there. Put a Notion page link or a Slack channel ID in `deliveryTarget`: in Notion every run is added on top of that one page, so your workspace does not fill up with new pages. A delivery error never fails the run and costs nothing extra. Connect a service once in Apify Console → MCP connectors.

#### Use case → fields

| Buyer job | Input path | Output entity | Key fields | Next integration |
| --- | --- | --- | --- | --- |
| Compare prices | `queries` | Gig row | `startingPrice`, `listedPrice`, `sellerLevel` | CSV export |
| Study a seller | `startUrls` with a seller link | Seller row, gig rows | `level`, `ratingCount`, `gigsCount`, `skills` | JSON export |
| Read reviews | `maxReviewsPerGig` | Gig row | `reviewsSummary`, `topReviews` | API |
| Watch changes | `onlyNew` | Gig row | `changeType`, `startingPrice` | Schedule and Slack summary |

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

### Pricing

#### Pricing unit

Each paid action below is one event. The prices already cover Apify compute and proxy.

| Event | When | Free | Bronze | Silver | Gold and up |
| --- | --- | ---: | ---: | ---: | ---: |
| Run start (`apify-actor-start`) | Once per GB of run memory, at least once. The default 256 MB is one event | $0.003 | $0.003 | $0.003 | $0.003 |
| Saved gig (`gig`) | One gig row saved to the Dataset | $0.00180 | $0.00162 | $0.00144 | $0.00126 |
| Fiverr page read (`source-page`) | One Fiverr page that answered, once per link in a run | $0.0002 | $0.0002 | $0.0002 | $0.0002 |
| Gig details (`gig-details`) | One gig row with details, on top of the gig fee | $0.003 | $0.003 | $0.003 | $0.003 |
| Review (`review`) | One review saved when `maxReviewsPerGig` is above 0. Each 5 reviews also need one page read | $0.0005 | $0.0005 | $0.0005 | $0.0005 |
| Seller row (`seller`) | One seller profile row | $0.003 | $0.003 | $0.003 | $0.003 |
| Sitemap row (`sitemap-row`) | One URL row in sitemap mode | $0.0002 | $0.0002 | $0.0002 | $0.0002 |

- A search page gives many gigs for one page fee. A gig page is read only when the card does not prove the price.
- No results: you pay the start and the pages that answered. This covers an empty search and a filter with no matches.
- Filtered gigs and unchanged monitored gigs have no gig fee. The pages read to find them are paid.
- A blocked or failed request has no page fee. A run that fails on the source pays the start, plus pages that answered before the failure.
- Wrong input stops the run before any Fiverr page. You pay only the start.
- A partial run keeps its rows and pays only for the work it did.
- With `includeDetails` alone, the first 5 reviews have no review fee.
- **Maximum cost per run** (`maxTotalChargeUsd` in the API) caps your spend. You can set $0.0052 or more. At the cap the run keeps its rows and ends with `status: CHARGE_LIMIT`. Pages are read and paid before their rows are saved, so a low cap gives fewer rows than a simple division suggests: in a test, a $0.02 cap gave 4 rows and 45 pages.

#### Cost examples

Page counts are from real runs. A search where Fiverr often shows the second package on a card reads more pages.

| Scenario | Input scope | Expected item/event count | Base charge | Optional charge | Stop/cap behavior |
| --- | ---: | ---: | ---: | ---: | --- |
| First test | 1 query, `maxItems: 10` | 1 start, 1–11 pages, 10 gigs | $0.021–$0.023 Free, $0.016–$0.018 Gold | None | Stops at 10 gigs |
| Small list | 1 query, `maxItems: 100` | 1 start, about 46 pages, 100 gigs | $0.192 Free, $0.138 Gold | None | Stops at 100 gigs |
| Market sample | Several queries, `maxItems: 1000` | 1 start, about 520 pages, 1,000 gigs | $1.91 Free, $1.37 Gold | None | Needs a longer timeout |
| Largest run | Several queries, `maxItems: 2000` | 1 start, about 1,300 pages, 2,000 gigs | $3.86 Free, $2.78 Gold | None | Needs about 42 minutes and a timeout above that |
| Gigs with reviews | 1 query, `maxItems: 10`, `maxReviewsPerGig: 10` | 1 start, about 31 pages, 10 gigs, 10 details, up to 100 reviews | $0.027 Free | $0.03 details, up to $0.05 reviews | Stops at 10 gigs |
| Monitor, no changes | `onlyNew: true`, 1 gig checked | 1 start, 1 page, 0 gigs | $0.0032 | None | Ends with `NO_CHANGES` |
| Wrong input | Empty form | 1 start | $0.003 | None | Ends with `INVALID_INPUT` |

If every card needs its gig page, the page fee is one more $0.0002 per gig. Set `exactStartingPrice` to `false` to read fewer pages.

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

### Limits

- Only public pages. There is no login, so private data and buyer accounts are not available.
- The tested maximum is 2,000 rows per run. Tests of 2,000 and 2,046 rows took 42 and 39 minutes at 256 MB.
- The default timeout is 300 seconds. In tests, 100 rows took 16–133 seconds. Above about 200 rows, raise the timeout. Otherwise the run ends with `status: DEADLINE` and keeps its rows.
- About 1 row per second is normal once Fiverr starts to limit direct requests. A short run can be much faster.
- One query gives about 300–500 rows in our tests, even when Fiverr says it has many more. Add more queries or turn on `splitLargeSearches` for more rows.
- With filters, a run stops reading after 20 cards per requested row. With `maxItems: 10`, that is 200 cards. If nothing matched by then, the run ends with `status: PARTIAL` and `reason: filter_scan_limit`.
- A run with many queries and links is best effort. If a part cannot be read, the run can still succeed with `status: PARTIAL`. `sources` shows which part failed and why.
- All prices are in USD. A gig with no proven cheapest package has `startingPrice: null`.
- `rating` on a direct gig link is rounded by Fiverr. Search rows are more exact.
- Fiverr result order changes between requests, so the output is a snapshot and not a full list of all gigs.
- `MARKET_SUMMARY` counts only the rows from your run.
- One run stops at 55 minutes, even with a longer timeout. It keeps its rows and ends with `status: DEADLINE`. A platform restart starts this count again: one such test took 59 minutes.
- A Fiverr page above 8 MB or a sitemap file above 32 MB is not read. `RUN_SUMMARY` names the reason.
- A monitoring list is kept in a named key-value store in your Apify account until you delete it.
- Check Fiverr's Terms and your local laws before you use the data. That choice is yours.

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

### API, export and integrations

- **API:** send the form JSON to `POST https://api.apify.com/v2/acts/cliqtomedia~fiverr-scraper/runs`. The run gets a Dataset, and its items endpoint returns the rows. Read `RUN_SUMMARY` from its key-value store.
- **Export:** Dataset exports include JSON, CSV, Excel, XML and RSS. See the [Apify export docs](https://docs.apify.com/platform/storage/dataset#exporting).
- **Scheduling:** set `onlyNew: true` and a `stateName`, then run it from an [Apify schedule](https://docs.apify.com/platform/schedules). Each run saves new gigs and price changes.
- **Webhooks / no-code:** an [Apify webhook](https://docs.apify.com/platform/integrations/webhooks) can call your system when a run ends. Read `defaultDatasetId` from the run, then read the rows.
- **SDK / MCP / agent:** use the [Apify API clients](https://docs.apify.com/api/client/js/) or the MCP server below.

#### Use with AI agents (MCP)

- MCP server URL with only this Actor: `https://mcp.apify.com?tools=cliqtomedia/fiverr-scraper`.
- Smallest useful input:

```json
{
  "queries": ["logo design"],
  "maxItems": 10
}
```

- Key output fields: `startingPrice` is the cheapest proven package in USD, `sellerLevel` is the Fiverr seller level, `rating` and `reviewsCount` show gig quality, and `url` is the gig page.
- Typical run: 2–27 seconds and about $0.02 for 10 rows on the Free plan.
- Limits: up to 2,000 rows per run, and about 300–500 rows per query. Null means unknown, and an empty Dataset has a reason in `RUN_SUMMARY`.

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

### Troubleshooting

#### Fewer rows than Maximum rows

Symptom: `message` says "N of M rows saved".
Likely reason: Fiverr shows only a limited number of gigs per search.
Check: `sources` in `RUN_SUMMARY` has `reason: source_depth_limit`.
Action: add more queries or turn on `splitLargeSearches`.

#### Run ended with status DEADLINE

Symptom: the run succeeded, but `partial` is `true` and there are fewer rows.
Likely reason: the timeout ended before the row limit. The default is 300 seconds.
Check: `message` in `RUN_SUMMARY`.
Action: raise the timeout in **Run options** or lower `maxItems`.

#### Empty Dataset

Symptom: the run has no rows.
Likely reason: `NOT_FOUND`, `NO_MATCHES`, `NO_CHANGES` or `SOURCE_ERROR`. They mean different things.
Check: `status` in `RUN_SUMMARY`.
Action: fix the query, loosen the filters, or try again later after `SOURCE_ERROR`.

#### startingPrice is null

Symptom: `listedPrice` has a value, but `startingPrice` is null.
Likely reason: the card does not prove the cheapest package, and proof is off or the gig page could not be read.
Check: `exactStartingPrice` in your input and `warnings` in `RUN_SUMMARY`.
Action: turn on `exactStartingPrice` or run the gig link again.

#### Status SOURCE_ERROR

Symptom: the run failed or `sources` shows a failed part.
Likely reason: Fiverr refused or did not answer repeated requests.
Check: `reason` in `sources`. This is not the same as "no gigs".
Action: try again later. Lower `maxConcurrency` if the run reports rate limits.

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

### FAQ

#### Do I need a Fiverr account or an API key?

No. The Actor reads only public pages. It needs no login, cookies or Fiverr API key.

#### What does a run with no results cost?

The start and the pages that answered. A query with no gigs costs about $0.0032 at the default memory. Rows dropped by your filters have no gig fee, but the pages are paid.

#### Why does startingPrice differ from the price on the card?

A Fiverr card often shows the second package. `listedPrice` keeps the card price. `startingPrice` is the cheapest package, proven by the card or by the gig page.

#### Can I get every gig on Fiverr?

No. Fiverr shows a limited list per search, and the order changes. Use more queries, `splitLargeSearches` or a sitemap run to widen the result. The run is a snapshot of what Fiverr showed at `fetchedAt`.

#### Does it collect contact details?

No. It saves public gig and seller profile fields, such as username, level, country and languages. It does not collect emails or phone numbers.

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

### Related Actors

- [Upwork Jobs Scraper: Pay, Clients & Job Alerts, No Login](https://apify.com/cliqtomedia/upwork-jobs-scraper) — see what clients ask and pay on another freelance marketplace.

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

### Support

For a bug, question or feature request, open the Actor's **Issues** tab on Apify. Include the run ID, your input mode and the `message` from `RUN_SUMMARY`. Never send tokens, cookies, private data or billing data.

> **👉 [Try it now: open the input form](https://console.apify.com/actors/k9JHDoELVPz8qqXgK/input)**

# Changelog

This Actor's version history is a separate document: https://apify.com/cliqtomedia/fiverr-scraper/changelog.md

# Actor input Schema

## `mode` (type: `string`):

Search: gigs from queries, categories and URLs. Sitemap: an inventory of Fiverr URLs from its public sitemaps, without opening each page.

## `queries` (type: `array`):

What a buyer would type in Fiverr search, one query per line. Up to 100.

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

Category links, or just the part after /categories/, for example graphics-design/creative-logo-design. Top-level categories without their own gig list return not_found.

## `startUrls` (type: `array`):

Any www.fiverr.com link: search, category, gig or seller. The type is detected automatically. Up to 1000. You can also link a text file with URLs.

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

Total rows across the whole run, and the main way to control cost. You pay per saved row and per Fiverr page read.

## `maxItemsPerSearch` (type: `integer`):

0 means no separate limit.

## `maxPagesPerSearch` (type: `integer`):

Fiverr shows about 20 pages for one query, 48 places per page with promoted repeats.

## `splitLargeSearches` (type: `boolean`):

When one result list runs out before Maximum rows, repeat the query for each seller level.

## `sortBy` (type: `string`):

Price sorting orders only the rows this run collected. It does not fetch the cheapest gigs on all of Fiverr.

## `sellerLevels` (type: `array`):

Keep only these seller levels.

## `sellerCountries` (type: `array`):

Two-letter codes, for example US or DE.

## `sellerLanguages` (type: `array`):

Two-letter codes, for example en or fr.

## `proOnly` (type: `boolean`):

Keep only gigs from Fiverr Pro sellers. Fiverr applies this filter itself.

## `onlineOnly` (type: `boolean`):

Keep only sellers who are online at the moment of the run. Fiverr applies this filter itself.

## `agencyOnly` (type: `boolean`):

Keep only gigs from agencies. Fiverr applies this filter itself.

## `hourlyOnly` (type: `boolean`):

Keep only gigs that offer hourly work. Fiverr applies this filter itself.

## `maxDeliveryDays` (type: `string`):

Maximum delivery time in days.

## `facets` (type: `array`):

Filters from a Fiverr page in key:value form, for example style:modern.

## `minPrice` (type: `number`):

Compares the proven starting price. A row without one is left out.

## `maxPrice` (type: `number`):

Compares the proven starting price. A row without one is left out.

## `minRating` (type: `number`):

Skip gigs rated below this value, from 0 to 5. A gig with no rating is skipped too.

## `minReviews` (type: `integer`):

Skip gigs with fewer reviews than this.

## `excludePromoted` (type: `boolean`):

Skip gigs that Fiverr shows as paid placements.

## `fiverrChoiceOnly` (type: `boolean`):

Keep only gigs with the Fiverr's Choice badge.

## `offersConsultation` (type: `boolean`):

Keep only gigs that offer a consultation before ordering.

## `hasSubscription` (type: `boolean`):

Keep only gigs with a recurring subscription option.

## `excludeWords` (type: `array`):

Leave out gigs whose title contains one of these whole words. Case does not matter.

## `exactStartingPrice` (type: `boolean`):

Fiverr search cards sometimes show the second package, not the cheapest one. On: the Actor opens the gig page for such a card, charged as one source page. Off: faster and cheaper, and startingPrice stays null there, while listedPrice is always filled.

## `includeDetails` (type: `boolean`):

Description, packages, FAQ, gallery, tags, portfolio and the first 5 reviews. Charged as an extra event per gig.

## `descriptionMaxLength` (type: `integer`):

0 keeps the full description.

## `maxReviewsPerGig` (type: `integer`):

Reviews are placed in topReviews on the gig row. More than 0 turns on gig details too.

## `reviewsSort` (type: `string`):

The order in which reviews are collected when you ask for them.

## `reviewsNewerThan` (type: `string`):

A date such as 2026-01-31, or a period such as 30 days.

## `includeSellerProfile` (type: `boolean`):

Adds one seller row per seller found: skills, languages, education, certifications, response time. Charged per seller row.

## `includeMarketSummary` (type: `boolean`):

Saves price percentiles, seller levels and countries per query as MARKET_SUMMARY in the key-value store. Free.

## `onlyNew` (type: `boolean`):

For repeat runs. Rows get changeType new or price_changed. Gigs without changes are not delivered, and no gig fee applies to them. Fiverr pages read to check them are still charged as source pages.

## `stateName` (type: `string`):

Separates one monitoring list from another. Letters, digits and hyphens, up to 40. Empty: named automatically from your queries and filters.

## `resetState` (type: `boolean`):

Starts monitoring again from an empty list.

## `sitemapType` (type: `string`):

Used with the URL inventory.

## `sitemapUrlContains` (type: `string`):

Keep only sitemap URLs containing this text.

## `sitemapSince` (type: `string`):

Keep only sitemap URLs with a last-modified date from this date, for example 2026-01-31.

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

How many Fiverr requests run at once. Lower it if a run reports rate limits.

## `maxRequestRetries` (type: `integer`):

Each retry uses a new connection.

## `deliveryConnector` (type: `string`):

Your Slack, Notion or other MCP connector. After the run the Actor posts a short summary there. Connect services once in Apify Console → MCP connectors.

## `deliveryTarget` (type: `string`):

Where to post the summary: a Notion page link (each run is added on top of that page) or a Slack channel ID. Leave empty to let the connector decide.

## Actor input object example

```json
{
  "mode": "search",
  "queries": [
    "logo design"
  ],
  "maxItems": 10,
  "maxItemsPerSearch": 0,
  "maxPagesPerSearch": 20,
  "splitLargeSearches": false,
  "sortBy": "auto",
  "sellerLevels": [],
  "proOnly": false,
  "onlineOnly": false,
  "agencyOnly": false,
  "hourlyOnly": false,
  "maxDeliveryDays": "any",
  "excludePromoted": false,
  "fiverrChoiceOnly": false,
  "offersConsultation": false,
  "hasSubscription": false,
  "exactStartingPrice": true,
  "includeDetails": false,
  "descriptionMaxLength": 0,
  "maxReviewsPerGig": 0,
  "reviewsSort": "relevant",
  "includeSellerProfile": false,
  "includeMarketSummary": true,
  "onlyNew": false,
  "resetState": false,
  "sitemapType": "gigs",
  "maxConcurrency": 5,
  "maxRequestRetries": 4
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

## `marketSummary` (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 = {
    "queries": [
        "logo design"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("cliqtomedia/fiverr-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 = {
    "queries": ["logo design"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("cliqtomedia/fiverr-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 '{
  "queries": [
    "logo design"
  ],
  "maxItems": 10
}' |
apify call cliqtomedia/fiverr-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cliqtomedia/fiverr-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/k9JHDoELVPz8qqXgK/builds/OFSzByDlq9SgG2GQS/openapi.json
