Fiverr Gig Scraper - Price, Level & Delivery
Pricing
from $0.75 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
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
startingPriceis always Fiverr's base USD amount, so runs are comparable no matter where the request exits fromsellerLevelcomes through asTop Rated,Level 2orLevel 1rather than as Fiverr's internal code- A gig with no reviews reports
rating: nullandreviewCount: 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?
| Field | Type | Description |
|---|---|---|
gigId | string | Fiverr's own gig ID. Stable across runs, use it as your key |
title | string | The gig title, as written by the seller |
startingPrice | number | Base package price in USD, e.g. 20 |
currency | string | Always USD. See the note below |
rating | number | Stars out of 5, e.g. 4.9. null when the gig has no reviews |
reviewCount | number | Exact review count, e.g. 16482 |
sellerName | string | The seller's Fiverr username |
sellerLevel | string | Top Rated, Level 2, Level 1, or null for an unranked seller |
deliveryDays | number | Delivery time of the recommended package, in days |
imageUrl | string | The gig's cover image |
gigUrl | string | Absolute link to the gig on Fiverr |
searchTerm | string | The term that produced this row |
sourceUrl | string | The Fiverr search URL the row was read from |
collectedAt | string | ISO 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
startingPriceacross 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,ratinganddeliveryDaysto 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.
startingPriceanddeliveryDaysare numeric, so the dataset drops straight into a notebook or a BI tool.
How to use it
- Open the Actor and click Try for free.
- 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.
- 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.
- Click Start. Each term is one request, so runs are quick even with a long keyword list.
- Export from the Storage tab as CSV, JSON or Excel, or read the dataset over the API.
- 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
| Field | Type | Default | Description |
|---|---|---|---|
searches | string[] | required | Fiverr search terms, 1 to 50 per run. Duplicates collapse to one fetch |
maxItems | integer | 1000 | Cap on dataset rows, 1 to 50000 |
concurrency | integer | 5 | Search 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.
Is it legal to scrape Fiverr?
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.
Related actors
- Upwork Jobs Scraper for the demand side of the same freelance market
- Etsy Listings Scraper for the same keyword-to-price research on handmade goods
- LinkedIn Profile Scraper when you want the person behind a service rather than the listing
- Indeed Job Listings Scraper to compare freelance rates against salaried roles for the same skill
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.