Fiverr Gig Scraper - Price, Level & Delivery avatar

Fiverr Gig Scraper - Price, Level & Delivery

Pricing

from $0.75 / 1,000 results

Go to Apify Store
Fiverr Gig Scraper - Price, Level & Delivery

Fiverr Gig Scraper - Price, Level & Delivery

Scrape Fiverr gig search results for any keyword. Every gig comes back with its title and URL, the starting price as a number in USD, star rating and review count, the seller's name and level badge, the delivery time in days and the cover image. 48 gigs per search term, one request each.

Pricing

from $0.75 / 1,000 results

Rating

0.0

(0)

Developer

String

String

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Share

What does the Fiverr Gig Scraper do?

Search Fiverr for logo design and the page shows you cards: "$20", "4.9 (16k)", a badge, a thumbnail. This Actor asks Fiverr the same question and gives you back the numbers behind those cards. startingPrice is 20. rating is 4.9. reviewCount is 16482, not 16k. Add the seller's level badge and the delivery time of the recommended package, and you have a row per gig that you can sort, average and chart without touching a regular expression.

One search term costs one request to Fiverr and returns 48 gigs. Ten terms return roughly 480 rows for ten requests, which makes a broad sweep of a category cheap. No Fiverr account, no login, no cookies: this is the logged-out search page.

  • Exact numbers rather than the abbreviated strings the DOM prints
  • startingPrice is always Fiverr's base USD amount, so runs are comparable no matter where the request exits from
  • sellerLevel comes through as Top Rated, Level 2 or Level 1 rather than as Fiverr's internal code
  • A gig with no reviews reports rating: null and reviewCount: 0, so an unrated gig never looks like a badly rated one
  • Fiverr's anti-bot interstitial is detected and reported as a failure rather than being written out as an empty success

What data does it extract?

FieldTypeDescription
gigIdstringFiverr's own gig ID. Stable across runs, use it as your key
titlestringThe gig title, as written by the seller
startingPricenumberBase package price in USD, e.g. 20
currencystringAlways USD. See the note below
ratingnumberStars out of 5, e.g. 4.9. null when the gig has no reviews
reviewCountnumberExact review count, e.g. 16482
sellerNamestringThe seller's Fiverr username
sellerLevelstringTop Rated, Level 2, Level 1, or null for an unranked seller
deliveryDaysnumberDelivery time of the recommended package, in days
imageUrlstringThe gig's cover image
gigUrlstringAbsolute link to the gig on Fiverr
searchTermstringThe term that produced this row
sourceUrlstringThe Fiverr search URL the row was read from
collectedAtstringISO timestamp, set once per run

About currency. Fiverr quotes a gig's base amount in USD and ships a separate display currency with a conversion rate that the browser applies for you. The same gig reads as 20 from a US exit and from a German one, while the payload's own currency block says EUR at 0.909. That block is display metadata, so reporting it as the price's currency would misstate every non-US run by exactly the conversion rate. The Actor reports the base amount and labels it USD.

Why scrape Fiverr?

Fiverr is one of the few places where a whole services market publishes its asking prices, which makes it unusually good raw material for pricing work.

  • Find out what a category actually starts at. The distribution of startingPrice across 48 gigs for a keyword tells you more than the three prices Fiverr chooses to show you above the fold.
  • Benchmark your own gig. Pull the first page for the keyword you rank on and compare your price, rating, review count and delivery time against the sellers you are sitting next to.
  • Source freelancers by filter, not by scrolling. Sort the dataset by sellerLevel, rating and deliveryDays to build a shortlist, then open only the gigs worth reading.
  • Watch a market move. Re-run the same terms weekly and key on gigId. Price rises, delivery times stretching out and Top Rated badges appearing are all visible in the diff.
  • Size up a niche before entering it. A keyword where half the first page is Top Rated sellers with five-figure review counts is a different proposition from one where it is not.
  • Feed a pricing model. startingPrice and deliveryDays are numeric, so the dataset drops straight into a notebook or a BI tool.

How to use it

  1. Open the Actor and click Try for free.
  2. Enter your keywords in Search terms, one per line, exactly as you would type them into Fiverr's search box. Between 1 and 50 of them.
  3. Leave Maximum results at its default unless you want a smaller dataset. Each term produces 48 rows, so the number you want is roughly 48 times the number of terms.
  4. Click Start. Each term is one request, so runs are quick even with a long keyword list.
  5. Export from the Storage tab as CSV, JSON or Excel, or read the dataset over the API.
  6. To track price movement, put the run on a Schedule and join successive runs on gigId.

Keywords are the only lever here. There is no category, price range, delivery-time or seller-level filter, so cover a market by supplying more and narrower terms rather than by tuning options that do not exist.

Input

FieldTypeDefaultDescription
searchesstring[]requiredFiverr search terms, 1 to 50 per run. Duplicates collapse to one fetch
maxItemsinteger1000Cap on dataset rows, 1 to 50000
concurrencyinteger5Search terms fetched in parallel, 1 to 10
{
"searches": ["logo design", "video editing", "voice over", "wordpress speed optimization"],
"maxItems": 200
}

maxItems truncates the collected rows; it does not change how much is fetched, because a term is one request either way. The example above fetches four terms, collects about 192 gigs and writes 192 rows. Setting maxItems to 100 would fetch the same four terms and write 100 rows.

Output

One row per gig. This is the shape, with plausible values rather than a captured run:

{
"gigId": "204871639",
"title": "I will design a modern minimalist logo for your brand",
"startingPrice": 20,
"currency": "USD",
"rating": 4.9,
"reviewCount": 16482,
"sellerName": "arcticpixel",
"sellerLevel": "Top Rated",
"deliveryDays": 2,
"imageUrl": "https://fiverr-res.cloudinary.com/images/q_auto,f_auto/gigs/204871639/original/logo-cover.png",
"gigUrl": "https://www.fiverr.com/arcticpixel/design-a-modern-minimalist-logo",
"searchTerm": "logo design",
"sourceUrl": "https://www.fiverr.com/search/gigs?query=logo%20design",
"collectedAt": "2026-08-19T09:14:02.771Z"
}

The run also writes a SUMMARY record to the key-value store with the item count, the failure count and every search term that failed, each with its error.

Where the numbers come from

Fiverr ships its search results as a tagged JSON payload inside the search page, and renders the cards from it in the browser. The Actor reads that payload rather than the rendered cards, which is why startingPrice, rating, reviewCount and deliveryDays are exact values instead of the display strings the DOM ends up with. Nothing is parsed back out of "4.9 (16k)".

Two details fall out of reading the payload directly. A gig with no reviews carries a zero rating in it, which is an absence of scoring rather than a bad score, so rating is emptied and reviewCount stays 0. And a voice-over or video gig leads with an audio or video asset that has no image at all, so the Actor takes the first asset that actually carries a cover image rather than blindly taking the first one, which would lose the thumbnail on a good share of those rows.

Fiverr answers a request it declines with an anti-bot interstitial and an HTTP 200, not an error status. The Actor recognises that page and records the search term under failures in the run's SUMMARY instead of writing an empty success. If every term failed, the run exits with an error.

There are no retries, deliberately. The String Unblocker owns proxy rotation and anti-bot solver selection, so a retry loop here would only re-roll the same block.

Limitations

One page of search results per term, so 48 gigs is the ceiling for a keyword. There is no paging.

Search results only. The Actor does not open gig detail pages, seller profiles or reviews, so gig descriptions, FAQ sections, portfolio images, seller response times, languages and country are out of scope. startingPrice is the base package price and deliveryDays belongs to the recommended package; the rest of the package ladder is not returned.

How much does it cost?

The Actor uses Apify's pay-per-event pricing and charges once per result row written to the dataset. You pay for rows, not for run time or memory, and a run that returns nothing charges nothing. The current per-result price is on the pricing tab above.

Charging happens on the push, so a spend limit on your account trims the write rather than overrunning it. A row that could not be charged for is never written.

Runs started from an Apify free plan stop at 250 requests and 250 results, and the run reports that it reached the limit. Any paid plan runs the full input and whatever maxItems you set. The limit exists because this Actor fetches through our own infrastructure, which Apify does not cover for free-plan runs, and it binds on requests as well as rows so that a fifty-term input cannot spend those fetches on rows the run will not return.

Using it with the Apify API

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_APIFY_TOKEN" });
const run = await client.actor("usestring/fiverr-gigs").call({
searches: ["logo design", "video editing"],
maxItems: 96
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const prices = items.map((gig) => gig.startingPrice).filter((price) => price !== null).sort((a, b) => a - b);
console.log(`median starting price: $${prices[Math.floor(prices.length / 2)]}`);

The same call works from the Python client, or against the Apify REST API in any language. The failure list is in the SUMMARY record in the run's key-value store.

The Actor reads search result pages Fiverr serves to anyone, with no login and no paywall in between. It does not sign in, does not touch orders, messages or buyer accounts, and collects no personal data beyond the public seller username printed on the card.

Scraping publicly available data is broadly lawful in the US and the EU, but what you do with it afterwards is governed separately by copyright, database rights and privacy law. Gig titles and cover images are the sellers' own work. If you plan to republish, resell or train on what you collect, take legal advice first. Nothing here is legal advice.

FAQ

How many gigs do I get per search term? 48, from one Fiverr request. That is the first page of search results, and there is no paging, so 48 is the ceiling per keyword. Cover more of a category by supplying more terms or narrower ones.

Is the price in my own currency? No. startingPrice is Fiverr's base USD amount and currency is always USD, which is what makes prices comparable between runs. Fiverr's own display currency is a client-side conversion and is deliberately not used.

Can I scrape a single gig, a seller profile or the reviews? No. This Actor reads search results. Gig detail pages, seller profiles, review text and the full package ladder are out of scope.

Can I filter by price, delivery time, category or seller level? Not on input. Fiverr's search filters are not exposed here, so filter the dataset after the run. Every field you would filter on, including startingPrice, deliveryDays, rating and sellerLevel, is in the output.

How fresh is the data, and what happens if Fiverr blocks a term? Each term is fetched live when the run starts, and collectedAt records that moment. Nothing is cached. When Fiverr serves its interstitial instead of results, that term is recorded under failures in the run's SUMMARY and the run continues. A run where every term failed exits with an error rather than reporting success on an empty dataset.

Do I need a Fiverr account, an API key, or my own proxies? No to all three. The Actor reads logged-out pages and brings its own fetching infrastructure, so there is no Apify proxy configuration to set up.

Feedback

If a field is parsed wrong, a seller level comes through unmapped, or a keyword fails consistently, open an issue from this Actor's Issues tab on the Store page with the input you ran. Requests for extra fields are welcome there too.