Tools/site-scrapers
Site Scrapers

Site Scrapers

Active

Your agent can't parse a platform's tangled markup; these return clean, structured items from specific sites.

49 tools

50+ ready-to-run scrapers that pull clean, structured items from specific platforms: Instagram, TikTok, Facebook, LinkedIn, YouTube, Reddit, Google Maps and Search, Amazon, eBay, Booking, Airbnb, Zillow, Indeed, Glassdoor, Trustpilot, and more. Async heavy scrapers return a continuation_token; pass it back to resume polling.

Web & Searchscrapingsocial-mediamarketplacereviewsjobslead-generationsearchinstagramtiktoklinkedinyoutube

Tools (49)

zillow-scraper

Zillow Detail Scraper.

Usage-based · 4.5 credits per result

Example prompts

  • Get the Zillow listing details for this property URL
  • Pull the price, beds, baths, and price history from a Zillow listing
  • Scrape full property details for a home on Zillow

Parameters

addressesarrayoptionaldefault: []

Addresses to scrape - should be in format 123 Main St, City, State

startUrlsarrayoptionaldefault: []

URLs to scrape - should be in format https://www.zillow.com/homedetails/Address/12345678_zpid/

propertyStatusstringoptionaldefault: "RECENTLY_SOLD"

Since Zillow uses different methods to fetch properties for sale, for rent and sold, the Actor needs to know the status of the properties in Start URLs. If you this is provided incorrectly, the Actor will figure out the correct status and use it, but it will require additional requests to Zillow.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

extractBuildingUnitsstringoptionaldefault: "disabled"

When you input a URL like https://www.zillow.com/b/160-beach-117-st-rockaway-park-ny-9VzB5T/, you can choose to scrape details of individual units in the building, instead of just generic building information.

searchResultsDatasetIdstringoptional

For easy integration, this actor can use output of these Zillow search scrapers to scrape more details: Zillow ZIP Code Search Scraper.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get the Zillow listing details for this property URL"
  }
}'

CLI Usage

askfaro describe site-scrapers/zillow-scraper

Install pip install askfaro-cli, then askfaro auth login.

indeed-scraper

Indeed Scraper.

Usage-based · 7.5 credits per job listing

Example prompts

  • Find software engineer jobs on Indeed in Austin
  • Scrape Indeed job listings for a search term and location
  • Get recent Indeed job postings for 'data analyst'

Parameters

countrystringoptionaldefault: "US"

Country for job search.

locationstringoptional

Any combination of city, zip code or locality for search. Used together with position/keywords.

positionstringoptional

Any combination of positions or keywords for search. Can be used together with Start URLs - both will be scraped independently, each limited by Max job listings per search.

startUrlsarrayoptional

List of URLs that will be scraped. Can be main website URL, category/search URLs, company jobs URL (in the format of `https://www.indeed.com/cmp/Google/jobs`) or detail/product URLs. Can be combined with keyword search - both will execute independently.

maxItemsPerSearchintegeroptionaldefault: 16

Maximum number of job listings to scrape for each keyword search and each Start URL. When both are used together, each is limited independently by this value.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

parseCompanyDetailsbooleanoptionaldefault: false

If true, will also navigate to company page of each job posting, to scrape company info not available directly on job posting page.

saveOnlyUniqueItemsbooleanoptionaldefault: true

If true, only unique job listings will be scraped.

followApplyRedirectsbooleanoptionaldefault: false

If true, will follow redirects of Indeed's externalApplyLink and output the final one.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Find software engineer jobs on Indeed in Austin"
  }
}'

CLI Usage

askfaro describe site-scrapers/indeed-scraper

Install pip install askfaro-cli, then askfaro auth login.

youtube-scraper

YouTube Scraper.

Usage-based · 5 credits per video

Example prompts

  • Scrape video details and view counts from a YouTube URL
  • Get YouTube videos for a search term with metadata
  • Pull stats for a list of YouTube videos

Parameters

is3Dbooleanoptional

Will apply the 3D filter for search

is4Kbooleanoptional

Will apply the 4K filter for search

isHDbooleanoptional

Will apply the HD filter for search

hasCCbooleanoptional

Will apply the Creative Commons filter for search

is360booleanoptional

Will apply the 360 degrees filter for search

isHDRbooleanoptional

Will apply the HDR filter for search

isLivebooleanoptional

Will apply the Live filter for search

isVR180booleanoptional

Will apply the VR180 filter for search

isBoughtbooleanoptional

Will apply the Purchased filter for search

startUrlsarrayoptionaldefault: []

Enter a link to a YouTube video, channel, playlist, hashtag or search results page. You can also import a CSV file or Google Sheet with a list of URLs. Note: Input from Search term will be ignored when using this option. If you only want to scrape shorts/streams, set Maximum search results to 0, otherwise they represented number of regular videos requested

videoTypestringoptional

Select Youtube video type filter for search

dateFilterstringoptional

Select Youtube upload date filter for search

maxResultsintegeroptionaldefault: 10

Limit the number of videos you want to crawl. If you scrape a channel, acts as a limit for regular videos.

hasLocationbooleanoptional

Will apply the Location filter for search

hasSubtitlesbooleanoptional

Will apply the Subtitles/CC filter for search

lengthFilterstringoptional

Select Youtube video length filter for search

sortVideosBystringoptional

Maps to the sorting buttons on the top of the channel's 'Videos', 'Shorts' and 'Live' pages.

sortingOrderstringoptional

Select Youtube sorting parameter for search

saveSubsToKVSbooleanoptional

If set to true, the scraper will save the downloaded subtitles to the key-value store. Note: Download subtitles must be turned on for this option to work.

searchQueriesarrayoptional

Enter search terms just like you would enter it in YouTube's search bar.

oldestPostDatestringoptional

Only posts uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting 1 day will get you only today's posts, 2 days - yesterday's and today's, and so on. Note, that if you select this, sorting parameter will be auto-reset to NEWEST

subtitlesFormatstringoptionaldefault: "srt"

Select in what format you want to download subtitles

maxResultStreamsintegeroptionaldefault: 0

Limit the number of Stream videos you want to crawl.

maxResultsShortsintegeroptionaldefault: 0

Limit the number of Shorts videos you want to crawl.

downloadSubtitlesbooleanoptional

If set to true, the scraper will download subtitles for the video and convert them to .srt format.

subtitlesLanguagestringoptionaldefault: "en"

Language to download subtitles in. Note: Download subtitles must be turned on for this option to work.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

preferAutoGeneratedSubtitlesbooleanoptional

If set to true, automatically generated subtitles are preferred to user subtitles. Note: A subtitle language must be selected and download subtitles must be turned on for this option to work.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape video details and view counts from a YouTube URL"
  }
}'

CLI Usage

askfaro describe site-scrapers/youtube-scraper

Install pip install askfaro-cli, then askfaro auth login.

idealista-scraper

Idealista Property Scraper (Spain, Italy, Portugal).

Usage-based · 1.25 credits per result

Example prompts

  • Find apartments for sale in Madrid on Idealista
  • Scrape Idealista property listings in Lisbon
  • Get rental listings from Idealista for a given city

Parameters

proxyobjectoptionaldefault: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}

Specifies proxy servers that will be used by the scraper in order to hide its origin. For details, see Proxy configuration in README.

maxItemsintegeroptionaldefault: 100

Maximum number of items that will be scraped.

startUrlsarrayrequired

URLs to start with.

splitByPricebooleanoptionaldefault: true

Idealista silently caps each search query at 1500 listings — confirmed against the iOS app itself; the limit lives on the API, not on the website. With this enabled (the default), the actor probes each start URL and, when the total would exceed 1500, automatically splits the search into smaller price brackets (e.g. 240k–360k, 360k–540k, 540k+) and merges the results into one dataset. Searches with under 1500 hits skip the splitting entirely (one extra probe request). Turn this OFF if you want the legacy behavior — a single un-fragmented query that stops at the cap.

maxConcurrencyintegeroptionaldefault: 10

Maximum number of pages that can be processed at the same time.

minConcurrencyintegeroptionaldefault: 1

Minimum number of pages that will be processed at the same time.

monitoringModebooleanoptionaldefault: false

If checked, it will only scrape newly listings compared to what has been scraped in previous runs.

maxRequestRetriesintegeroptionaldefault: 100

Number of times the crawler will retry a failed request before giving up.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Find apartments for sale in Madrid on Idealista"
  }
}'

CLI Usage

askfaro describe site-scrapers/idealista-scraper

Install pip install askfaro-cli, then askfaro auth login.

google-images-scraper

Scrape image details from Google Images.

Usage-based · 4.375 credits per scraped image

Example prompts

  • Scrape image results from Google Images for 'golden retriever'
  • Get image URLs and source pages from Google Images for a query

Parameters

queriesarrayoptional

The queries of searches you want to get the data from.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

maxResultsPerQueryintegeroptionaldefault: 28

The maximum amount of results to result per every query.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape image results from Google Images for 'golden retriever'"
  }
}'

CLI Usage

askfaro describe site-scrapers/google-images-scraper

Install pip install askfaro-cli, then askfaro auth login.

google-maps-reviews

Google Maps Reviews Scraper.

Usage-based · 0.75 credits per scraped review

Example prompts

  • Get Google Maps reviews for a restaurant
  • Scrape recent reviews and star ratings for a business on Google Maps
  • Pull all reviews for a place from its Google Maps URL

Parameters

languagestringoptionaldefault: "en"

Results details will show in this language.

placeIdsarrayoptional

List of place IDs. You can add place IDs one by one or upload a list using the Bulk edit option.

startUrlsarrayoptional

List of URLs to be crawled. They can be search URLs, place URLs or review detail URLs. Valid Google Maps place URLs must contain one of the following subpaths: /maps/search, /maps/place or /maps/reviews. This feature also supports uncommon URL formats such as: google.com/maps?cid=***.

maxReviewsintegeroptionaldefault: 100

Max number of reviews per place to scrape. If you want to scrape all reviews, remove the prefilled value.

reviewsSortstringoptionaldefault: "newest"

Define how reviews should be sorted.

personalDatabooleanoptionaldefault: true

This setting allows you to get personal data about the reviewer (their ID, name, URL, and photo URL) and about review (URL). Note: review ID (reviewId) is always included regardless of this setting. ⚠️ Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

reviewsOriginstringoptionaldefault: "all"

Select whether you want all reviews (from Google, Tripadvisor, etc.) or only reviews from Google

reviewsStartDatestringoptional

Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). JSON input also supports adding time in both absolute (ISO standard, e.g. `2024-05-03T20:00:00`) and relative (e.g. `3 hours`) formats. Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `minutes`, `hours`, `days`, `weeks`, `months`, `years`. ⚠️ Heads up: If this parameter is specified, you must choose the 'Newest' sort by value. The reason for this is that with this parameter entered, the actor stops scraping reviews as soon as it finds the first review that's older than the specified date. If the sorting is not set to 'Newest', it might encounter a review older than the specified date before it reaches the desired review count and not scrape the desired amount of reviews.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get Google Maps reviews for a restaurant"
  }
}'

CLI Usage

askfaro describe site-scrapers/google-maps-reviews

Install pip install askfaro-cli, then askfaro auth login.

instagram-reel-scraper

Instagram Reel Scraper.

Usage-based · 3.25 credits per reel

Example prompts

  • Scrape Instagram Reels from a profile with view counts
  • Get metadata for Instagram Reels by hashtag

Parameters

usernamearrayrequired

Add Instagram usernames, profile URLs, IDs, or direct reel URLs. Each item will be processed individually.

resultsLimitintegeroptionaldefault: 27

Set how many reels should be scraped per profile. For example, if set to 5, the scraper will extract up to 5 reels from each profile. This setting is ignored when scraping direct reel URLs.

skipPinnedPostsbooleanoptionaldefault: false

Enable this option if you want to exclude pinned reels from the overall results.

includeTranscriptbooleanoptionaldefault: false

Extract a text transcript of the reel audio for content analysis. This add-on feature is charged per minute of audio.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

includeSharesCountbooleanoptionaldefault: false

Extract the number of shares for each reel. Available for paying users only. Upgrade to the Starter plan to unlock it.

onlyPostsNewerThanstringoptional

Scrape reels from the provided date up to the present. Supported formats include `YYYY-MM-DD`, full ISO timestamps (e.g. `2025-09-23T10:02:01`), or relative time such as `1 day`, `2 weeks`, or `3 months`. All times are evaluated in UTC.

includeDownloadedVideobooleanoptionaldefault: false

Download the reel video and store a local copy before Instagram links expire. This add-on feature is charged per 1 MB downloaded.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape Instagram Reels from a profile with view counts"
  }
}'

CLI Usage

askfaro describe site-scrapers/instagram-reel-scraper

Install pip install askfaro-cli, then askfaro auth login.

trustpilot-reviews

Trustpilot Reviews Scraper.

Usage-based · 8.75 credits per review

Example prompts

  • Get Trustpilot reviews for a company
  • What are customers saying about a brand on Trustpilot?
  • Scrape recent Trustpilot reviews and star ratings for a business

Parameters

proxyobjectoptionaldefault: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}

Proxy servers used for outbound requests. Trustpilot's mobile gateway is generally not blocked, so proxy is optional but recommended for high-volume runs.

sortBystringoptionaldefault: "auto"

How each review stream is ordered. `auto` picks `recent` whenever a start date is set (so the cutoff actually short-circuits pagination) and `relevancy` otherwise.

maxItemsintegeroptionaldefault: 14

Per-input cap. With 3 inputs and `maxItems=30`, you can collect up to 90 reviews total (30 per input). When 'Expand regional domains' is on, this budget is shared across the primary BU and all its regional siblings.

startDatestringoptional

Format YYYY-MM-DD, e.g., 2022-02-20. Used as a hard chronological cutoff: when set, the scraper switches to `sort=createdAt:desc` and short-circuits pagination as soon as it crosses the date.

startUrlsarrayoptional

Enter one item per row. Each value can be a Trustpilot `/review/` or `/users/` URL, a company URL, or a bare slug such as `bankfive`. Wrong `/review/` slugs trigger a Trustpilot search fallback. **Note on locale subdomains:** localized hosts (e.g. `fr.trustpilot.com`, `it.trustpilot.com`) are normalized to `www.trustpilot.com` so you don't accidentally miss reviews — Trustpilot's main `.com` page is multilingual and contains every review the locale subdomains do, plus more. If you want reviews in one specific language, use the **Languages to include** filter (`filterLanguages`) instead; submitting a locale subdomain alone won't restrict by language.

filterStarsarrayoptionaldefault: []

Limit reviews to specific star ratings. Leave empty to include all ratings (1–5).

searchTermsarrayoptional

One brand name per row, e.g. `nike`, `noom`, `marcovasco`. The scraper resolves each to its canonical business unit and (when 'Expand regional domains' is on) also sweeps every regional sibling on Trustpilot's index.

includeStatsbooleanoptionaldefault: false

When enabled, each review item is enriched with the `stats` block (total review count, per-star rating distribution, …).

maxConcurrencyintegeroptionaldefault: 10

Maximum number of inputs being processed in parallel (each input runs many sequential page fetches).

minConcurrencyintegeroptionaldefault: 1

Minimum number of inputs that will be processed at the same time.

filterCountriesarrayoptional

ISO 3166-1 alpha-2 country codes to keep, e.g. `US`, `GB`, `DE`. Matched against the reviewer's profile country (`consumer.countryCode`). Leave empty to keep all countries. The gateway has no server-side country filter, so this is applied client-side — non-matching reviews still cost a request and the drop count is logged in the per-URL summary.

filterDateRangestringoptionaldefault: "all"

Server-side rolling date window. Equivalent to the iOS app's 'Date posted' filter. The gateway only accepts these enums; anything else returns HTTP 400. For an exact cutoff, use the 'Only scrape reviews newer than' field below — they compose (the more restrictive one wins).

filterLanguagesarrayoptional

ISO 639-1 codes (e.g. `en`, `de`, `fr`, or `unknown` for reviews Trustpilot couldn't classify). Leave empty to auto-discover and sweep all languages found on each business unit. **This is the right knob to use if you want to restrict results to one language** — locale subdomains in start URLs (e.g. `it.trustpilot.com`) are intentionally normalized away to avoid silently losing reviews, so language filtering must be explicit here.

scrapeAllReviewsbooleanoptionaldefault: true

Controls the language scope sent to Trustpilot's gateway. **Enabled (default)**: requests `language=all`, fetching every language available on the BU — maximizes coverage but mixes locales (e.g. a `.com` URL will return Italian, French, German reviews alongside English). **Disabled**: no `language` param is sent, so the gateway returns its own default slice — this is typically what `trustpilot.com/review/` shows a visitor in their browser (filtered by their `Accept-Language`). The multi-language sweep that fires on large BUs is also skipped when disabled. For a specific language, use **Languages to include** below instead — an explicit filter overrides this setting.

filterRepliesOnlybooleanoptionaldefault: false

Equivalent to the iOS app's 'Reviews with replies' toggle. Sent server-side as `onlyWithReplies=true`, so the gateway prunes reviews without replies before responding.

maxRequestRetriesintegeroptionaldefault: 100

Number of times the scraper will retry a failed mobile-gateway request before giving up.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

filterVerifiedOnlybooleanoptionaldefault: false

Equivalent to the iOS app's 'Verified reviews' toggle. Sent server-side as `onlyVerified=true`, so the gateway prunes non-verified reviews before responding — no wasted requests. The canonical output's `isVerified` reflects truth (derived from `verificationLabel.type === 'verified'`; the raw response boolean is misleading).

includeTransparencybooleanoptionaldefault: false

When enabled, each review item is enriched with the `transparency` block (collecting method distribution, stars breakdown by method, monthly data, etc.).

expandRegionalDomainsbooleanoptionaldefault: true

After resolving each input, also fetch every regional sibling on Trustpilot's index that matches the same brand (e.g. `nike` → `nike.com`, `nike.uk`, `nike.de`, `nike.dk`, …). Strict displayName matching keeps unrelated brands out. Shared `maxItems` budget across siblings.

includeCompanyDetailsbooleanoptionaldefault: false

When enabled, each review item is enriched with the `company` block (display name, identifying domain, country, total review count, …).

includeCompanyAdditionalFieldsbooleanoptionaldefault: false

On-demand enrichment. When enabled, each review's `company` block is augmented with `consumerAlert`, `consumerAlerts`, `hasCollectedIncentivisedReviews`, and (when still exposed by Trustpilot) `basiclinkRate`. Costs one extra HTTP request per unique business unit. Has no effect unless 'Include company details in output' is also enabled.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get Trustpilot reviews for a company"
  }
}'

CLI Usage

askfaro describe site-scrapers/trustpilot-reviews

Install pip install askfaro-cli, then askfaro auth login.

pinterest-search

Pinterest Scraper.

Usage-based · 4.9875 credits per result

Example prompts

  • Search Pinterest for 'minimalist kitchen' pins
  • Scrape Pinterest pins and images for a keyword

Parameters

typestringoptionaldefault: "all-pins"

Select the kind of Pinterest results to collect from your keyword searches. Use all pins for broad visual discovery, or choose videos, boards, or profiles when your research needs a narrower result type.

limitintegeroptionaldefault: 25

Control how many records should be saved for each keyword search. Use a smaller number for fast validation or sampling, and increase it when you need a larger dataset for analysis.

queriesarrayoptional

Enter one or more keywords, topics, styles, brands, products, or themes to search on Pinterest. Use keywords when you want discovery-based collection instead of starting from known URLs.

startUrlsarrayoptional

Paste Pinterest URLs when you already know the exact pages to collect. You can include search result pages, category pages, boards, profiles, individual pins, and video pins in the same run for precise source control.

content_analysisbooleanoptionaldefault: false

When enabled, the actor classifies each pin or video pin using its title, image alt text, descriptions, hashtags, and destination domain. Matching records include content_category_label, content_category_path, content_category_confidence, and content_category_match_type.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

proxyConfigurationobjectoptionaldefault: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}

Choose a proxy configuration when you need region-specific access or more controlled connection behavior. Leave the default Apify proxy setup in place unless your workflow requires a different network configuration.

sentinent_analysisbooleanoptionaldefault: false

When enabled, the actor analyzes each pin or video pin using its title and image alt text, then adds sentiment_score, sentiment_score_normalized, sentiment_confidence, and sentiment_label to those records.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Search Pinterest for 'minimalist kitchen' pins"
  }
}'

CLI Usage

askfaro describe site-scrapers/pinterest-search

Install pip install askfaro-cli, then askfaro auth login.

tiktok-scraper

TikTok Scraper.

Usage-based · 4.625 credits per result

Example prompts

  • Scrape TikTok videos for a hashtag
  • Get TikTok posts and engagement stats for a search term

Parameters

hashtagsarrayoptional

Just add one or more TikTok hashtags and the scraper will collect data about videos containing this hashtag: likes, users, followers and more. You can enter the hashtags one by one, or use the Bulk edit section to add a prepared list.

postURLsarrayoptional

Add the URLs of tiktok videos you want to scrape. You can paste video URLs one by one, or use the Bulk edit section to add a prepared list.

profilesarrayoptional

Add one or multiple TikTok usernames or user IDs you want to scrape. You can enter the usernames one by one, or use the Bulk edit section to add a prepared list.

mostDiggsintegeroptional

Optional charged filter. Scrapes only videos with less hearts than the number you add. Doesn't work with date filters

leastDiggsintegeroptional

Optional charged filter. Scrapes only videos with no less hearts than the number you add. Doesn't work with date filters

searchQueriesarrayoptional

Your keyword will apply to both videos and profiles. Use the Search sorting field below to specify whether you want your search to apply to top content, videos or users. As for your query's format, you can use any query that works on TikTok.

searchSectionstringoptionaldefault: ""

By default, this scraper will sort the search results by whatever shows up in the Top section of TikTok search. But you can narrow it down: if you want to apply your search query to just videos, use Video, just profiles - Profile.

newestPostDatestringoptional

Optional charged filter. Only videos uploaded before or on this date will be scraped.

profileSortingstringoptionaldefault: "latest"

Select Latest to scrape the most recent videos first, Oldest - the oldest videos first, Popular - the most popular videos first. Date filters only work with Latest and Oldest. Only supported for Videos section

resultsPerPageintegeroptionaldefault: 1

Add the number of tiktoks you want to scrape per hashtag, profile, or search query. This field is applicable to #️⃣ Hashtags, 😎 Profiles, and 🔍 Search.

commentsPerPostintegeroptional

The number of comments extracted from every result. Due to TikTok API limitations, the actual number of scraped comments may differ, especially for posts with thousands of comments. The link to the dataset will be under a field commentsDatasetURL in the output.

proxyCountryCodestringoptionaldefault: "None"

Country to use with proxy. Use it in case you want to scrape posts only available for some country.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

excludePinnedPostsbooleanoptionaldefault: false

Tick to exclude pinned posts from profiles. Pinned posts are usually the first videos on a profile's page.

videoSearchSortingstringoptionaldefault: "MOST_RELEVANT"

Optional charged filter. Select how you want the search results to be sorted when searching for videos. Only valid with `/video` search section.

maxProfilesPerQueryintegeroptionaldefault: 10

Only applies to profile searches. In this case ignore the 💯 Number of videos section and choose the number of profiles you want to scrape here.

scrapeRelatedVideosbooleanoptionaldefault: false

Tick to scrape related videos for the post URLs you provide. - The maximum number of scraped related videos is set by the `resultsPerPage` count. - Note that this only works for direct video URLs from the `postURLs` field.

maxRepliesPerCommentintegeroptional

The maximum number of replies you want from a single comment. Note: Successful extraction of all desired replies is currently not guaranteed.

shouldDownloadCoversbooleanoptionaldefault: false

Tick to download TikTok video cover images (thumbnails).

shouldDownloadVideosbooleanoptionaldefault: false

This is a charged add-on. Tick to download TikTok videos.

videoKvStoreIdOrNamestringoptional

Name (or ID) of the Key Value Store where the videos and other media like thumbnails will be stored. Omit to store in the default one. Using this option will provide a named Key-Value store can help bypass data retention and store the content forever until the store is manually deleted. The Key-Value store's name can consist of a versatile combination of uppercase letters, lowercase letters, digits, or hyphens, all without any spaces.

oldestPostDateUnifiedstringoptional

Optional charged filter. Only videos uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting 1 will get you only today's posts, 2 - yesterday's and today's, and so on.

profileScrapeSectionsarrayoptionaldefault: ["videos"]

If a profile has reposted videos, you can scrape them by selecting 'Reposts'

shouldDownloadAvatarsbooleanoptionaldefault: false

Tick to download authors' profile pictures.

videoSearchDateFilterstringoptionaldefault: "ALL_TIME"

Optional charged filter. Select a date range in which to search for videos. Only valid with `/video` search section.

maxFollowersPerProfileintegeroptional

Scrapes number of 'Followers' profiles requested from the inputted profiles. You can find the link to the dataset under the followDatasetUrl field in the output. If you want to scrape only Followers/Following profiles, go to our TikTok Followers Scraper.

maxFollowingPerProfileintegeroptional

Scrapes number of 'Following' profiles requested from the inputted profiles. You can find the link to the dataset under the followDatasetUrl field in the output. If you want to scrape only Followers/Following profiles, go to our TikTok Followers Scraper.

topLevelCommentsPerPostintegeroptional

The maximum number of top-level (non-reply) comments you want from a single post.

downloadSubtitlesOptionsstringoptionaldefault: "NEVER_DOWNLOAD_SUBTITLES"

Choose how to handle subtitles and audio transcription for input videos. Subtitles are provided by TikTok for some videos, and transcription means that this Actor will use speech-to-text AI to generate video transcript. Transcripts are charged as an extra event according to your plan.

shouldDownloadMusicCoversbooleanoptionaldefault: false

Tick to download cover images of sounds used in posts.

shouldDownloadSlideshowImagesbooleanoptionaldefault: false

Tick to download TikTok slideshow images.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape TikTok videos for a hashtag"
  }
}'

CLI Usage

askfaro describe site-scrapers/tiktok-scraper

Install pip install askfaro-cli, then askfaro auth login.

facebook-groups-scraper

Facebook Groups Scraper.

Usage-based · 6.25 credits per post

Example prompts

  • Scrape posts from a public Facebook group
  • Get recent posts and engagement from a Facebook group URL

Parameters

startUrlsarrayrequired

Insert a URL of a valid Facebook group. Only public Facebook groups can be scraped.

viewOptionstringoptionaldefault: "CHRONOLOGICAL"

Select sorting order by which the posts should be scraped. Please note that the Number of results field will be applied to New posts only. The BuySell items sorting will return results for BuySell groups only.

resultsLimitintegeroptionaldefault: 20

Select the number of posts you want to scrape. If this limit is not set, as many results as possible will be returned.

searchGroupYearstringoptional

The scraper will extract Facebook posts by this year. To use this field, you need to fill in the Search by letter field above ↑.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

onlyPostsNewerThanstringoptional

Scrapes post from the provided date to the present day. The date should be in YYYY-MM-DD or full ISO absolute format or in relative format e.g. 1 days, 2 months, 3 years. The JSON input also supports adding time units (UTC timezone): Full or partial ISO timestamp (e.g., `2025-09-23T10:02:01`) as absolute time and relative time, e.g., `1 hour` or `2 minutes`.

searchGroupKeywordstringoptional

Without logging in, search results are VERY limited, so searching by word will return nothing in most cases. To get more messages, it is recommended to use a one or two letter search and change the year.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape posts from a public Facebook group"
  }
}'

CLI Usage

askfaro describe site-scrapers/facebook-groups-scraper

Install pip install askfaro-cli, then askfaro auth login.

booking-scraper

Booking Scraper.

Usage-based · 6.25 credits per scraped place result

Example prompts

  • Find hotels in Paris on Booking.com
  • Scrape hotel prices, ratings, and availability from Booking.com

Parameters

roomsintegeroptionaldefault: 1
adultsintegeroptionaldefault: 2
searchstringoptional

Insert the destination name here

sortBystringoptionaldefault: "distance_from_search"

Hotel attribute by which the results will be ordered

checkInstringoptional

Select the check-in date in format YYYY-MM-DD or {number} {unit}. - ***Input the date in the UTC timezone!*** Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.

checkOutstringoptional

Select the check-out date in format YYYY-MM-DD or {number} {unit}. - ***Input the date in the UTC timezone!*** Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.

childrenintegeroptionaldefault: 0
currencystringoptionaldefault: "USD"

Currency to be set on the website

languagestringoptionaldefault: "en-gb"

Language to be set on the website (does not apply to reviews)

maxItemsintegeroptionaldefault: 10

Limit the number of places to be scraped. Input a value over `1000` to activate the 'overcome 1000 results limit' feature.

minScorestringoptional

Minimum rating of a hotel in "8.4" format. - Searching below a rating of `5` may be very inefficient, as it's not natively supported by Booking.

startUrlsarrayoptional

Insert URLs to start with instead of a destination name. Hotel search URL's filters will be applied, except for the ones in the scraper input. You can also use shared list URLs. These links are generated for properties you saved in your Booking account.

flexWindowstringoptional

Number of days to flex around the check-in and check-out dates. E.g. setting `3` will scrape hotels with a possible date range up to 3 days before and 3 days after the selected dates. - **Applied per URL:** used for search-style start URLs (destination, region, coordinates) or a `search` query, and **ignored for direct hotel URLs** (`/hotel/...html`), where only the exact `checkIn`/`checkOut` dates are used.

minMaxPricestringoptional

Insert the minimum and maximum price per night, e.g. '100-150' or '100+.'

propertyTypestringoptionaldefault: "none"

Choose type of property

starsCountFilterstringoptionaldefault: "any"

Only scrape places with the selected stars count. Also includes Booking's apartment-like properties 'square' rating.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

extractAdditionalHotelDatabooleanoptionaldefault: false

Enables scraping of additional fields for each hotel: surroundings (nearby points of interest and distances) and roomOfferings (available room types with their details).

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Find hotels in Paris on Booking.com"
  }
}'

CLI Usage

askfaro describe site-scrapers/booking-scraper

Install pip install askfaro-cli, then askfaro auth login.

instagram-post-scraper

Instagram Post Scraper.

Usage-based · 2.125 credits per post

Example prompts

  • Scrape posts from an Instagram profile
  • Get likes, captions, and comments for Instagram posts

Parameters

usernamearrayrequired

Insert the username or URL of any profile you want to get posts from. You can also paste the post URLs.

resultsLimitintegeroptionaldefault: 24

This is the maximum number of posts you want to scrape per profile. If you set it to 5, you'll get 5 posts for each profile you've included. This setting does not apply if you're scraping by post URLs.

dataDetailLevelstringoptionaldefault: "detailedData"

Choose the data package you want to extract. Please note the Detailed data are paid extra.

skipPinnedPostsbooleanoptionaldefault: false

Check if you do not want to save pinned posts.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

onlyPostsNewerThanstringoptional

Limit how far back to the history the scraper should go. The date should be in YYYY-MM-DD or full ISO absolute format or in relative format e.g. 1 days, 2 months, 3 years. All time values are taken in UTC timezone

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape posts from an Instagram profile"
  }
}'

CLI Usage

askfaro describe site-scrapers/instagram-post-scraper

Install pip install askfaro-cli, then askfaro auth login.

play-store-reviews

Google Play Store Reviews Scraper.

Usage-based · 0.1875 credits per review

Example prompts

  • Get Google Play Store reviews for an app
  • Scrape recent app reviews and ratings from the Play Store

Parameters

ratingintegeroptional

Get reviews ONLY with a specific rating (1-5)

sortBystringoptionaldefault: "mostRelevant"

How to sort the reviews

endDatestringoptional

Only include reviews up to this date (YYYY-MM-DD)

keywordsarrayoptional

Filter reviews containing specific keywords

languagearrayoptional

Filter reviews by language (e.g. 'en', 'fr', 'de')

startPageintegeroptionaldefault: 1

Page number to start scraping from

appIdOrUrlstringrequired

App package name (e.g., 'com.supercell.brawlstars') or full Google Play Store URL

appVersionarrayoptional

Filter reviews by app version (e.g. '65.165', '64.226')

deviceTypestringoptionaldefault: "mobile"

Device type to scrape reviews from

maxReviewsintegeroptionaldefault: 666

Maximum number of reviews to scrape (-1 for no limit). Non-paying Apify users are limited to 5 total runs and 500 total reviews across all runs. A free-user run counts even if it returns zero matching reviews.

recentDaysintegeroptionaldefault: 0

Only include reviews from the last N days (0 = no limit)

uniqueOnlybooleanoptionaldefault: true

Only include unique reviews (by reviewId)

ratingFilterarrayoptional

Filter reviews by rating (e.g. 1,2,3,4,5)

pagesToScrapeintegeroptionaldefault: 5

Maximum number of pages to scrape (-1 for all available)

reviewsPerPageintegeroptionaldefault: 100

Number of reviews per page to scrape

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get Google Play Store reviews for an app"
  }
}'

CLI Usage

askfaro describe site-scrapers/play-store-reviews

Install pip install askfaro-cli, then askfaro auth login.

linkedin-company-search

LinkedIn Company Search Scraper.

Usage-based · 5 credits per company

Example prompts

  • Search LinkedIn for companies in the fintech industry
  • Find LinkedIn company pages matching a keyword

Parameters

maxItemsintegeroptionaldefault: 20

Maximum number of companies to scrape. The actor will stop scraping when this limit is reached.

locationsarrayoptional

Filter Companies by these LinkedIn locations. Example: `San Francisco`. LinkedIn does not always understand your text queries. For example for "UK" query it will apply "Ukraine" location, so you should use "United Kingdom" in this case. Try this out first in the location filter input of LinkedIn search at `https://www.linkedin.com/search/results/people/?geoUrn=%5B%22103644278%22%5D` - we will use the first suggestion from the autocomplete popup when you type your location

startPageintegeroptionaldefault: 1

The page number to start scraping from. The last page is 20, according to LinkedIn limitations.

takePagesintegeroptional

The number of search pages to scrape. Each page contains 50 companies. The last page is 20, according to LinkedIn limitations.

companySizearrayoptional

Filter Companies by these company size ranges.

industryIdsarrayoptional

Filter Companies by these LinkedIn industry IDs. Example: `4` for 'Software Development'. Full list: `https://github.com/HarvestAPI/linkedin-industry-codes-v2/blob/main/linkedin_industry_code_v2_all_eng_with_header.csv`

scraperModestringoptional

Choose the mode for scraping LinkedIn companies. The Short mode provides basic information, while the Full mode includes full detailed company data.

searchQuerystringoptional

Query to search LinkedIn companies. (e.g., `marketing`). The query supports search operators

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Search LinkedIn for companies in the fintech industry"
  }
}'

CLI Usage

askfaro describe site-scrapers/linkedin-company-search

Install pip install askfaro-cli, then askfaro auth login.

google-search-scraper

Google Search Results Scraper.

Usage-based · 5.625 credits per scraped search result page

Example prompts

  • Scrape Google search results for 'best CRM software'
  • Get the top organic Google results for a query

Parameters

sitestringoptional

Limits the search to a specific site, such as: site:example.com. Note that the site filter takes precedence over the relatedToSite filter. If both filters are set, the relatedToSite filter will be ignored and not added to the search queries.

queriesstringrequired

Use regular search words or enter Google Search URLs. You can also apply advanced Google search techniques, such as AI site:twitter.com or javascript OR python. You can also define selected search filters as separate fields below (in the Advanced search filters section). Just ensure that your queries do not exceed 32 words to comply with Google Search limits.

saveHtmlbooleanoptionaldefault: false

If checked the HTML of the Google Search results pages will be stored to the default dataset, under the html property. This is useful if you need to process the HTML, but it makes the dataset large.

afterDatestringoptional

Filters results from after the specified date. Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `days`, `weeks`, `months`, `years`. You should avoid combining this filter with the `quickDateRange` filter to prevent conflicts.

fileTypesarrayoptional

Filters results of specific file types using the filetype: operator, such as filetype:pdf. You can select multiple file types as well. They will be combined with the OR operator, for example: filetype:doc OR filetype:txt. If you need to use a file type that is not in the list (such as a source code file type), you can include it in your custom queries from the queries field, using the filetype: operator.

beforeDatestringoptional

Filters results from before the specified date. Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `days`, `weeks`, `months`, `years`. You should avoid combining this filter with the `quickDateRange` filter to prevent conflicts.

wordsInUrlarrayoptionaldefault: []

Filters pages with specific words in the URL. The scraper uses the inurl: operator, even for multiple words (e.g. recipe site:allrecipes.com inurl:apple inurl:pie). There's also a allinurl: operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the allinurl: operator specifically, you can include it in your custom queries from the queries field.

countryCodestringoptional

Specifies the country used for the search and the Google Search domain (e.g. google.es for Spain). By default, the Actor uses United States (google.com).

wordsInTextarrayoptionaldefault: []

Filters pages with specific words in the text. The scraper uses the intext: operator, even for multiple words (e.g. cartoon site:wikipedia.com intext:cat intext:mouse). There's also a allintext: operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the allintext: operator specifically, you can include it in your custom queries from the queries field.

aiModeSearchobjectoptionaldefault: {"enableAiMode":false}

Scrapes results from Google AI Mode — Google's dedicated AI-powered search interface on google.com, distinct from the standard AI Overviews snippets that appear in regular search results. AI Mode provides deeper, conversational answers with cited sources. Essential for Answer Engine Optimization (AEO) and Generative Engine Optimization (GEO) strategies — track how your brand or content appears when users switch to Google's AI search experience. An additional fee applies per successful result retrieved. See the Pricing tab for your subscription tier rate.

geminiSearchobjectoptionaldefault: {"enableGemini":false}

Fetches an AI answer from Google Gemini (gemini.google.com) — Google's standalone AI assistant, separate from Google Search. Use this for cross-platform comparison to identify narrative differences and coverage gaps across AI platforms. Note: An additional fee applies per result when this feature is active. Please refer to the Pricing tab for your specific rate.

includeIconsbooleanoptionaldefault: false

If checked, all of the results (organicResults, paidResults, suggestedResults) will contain Base64-encoded icon image data if found.

languageCodestringoptionaldefault: ""

Language of the Google Search interface (menus, buttons, etc. - not the search results themselves). Passed to Google Search as the hl URL query parameter. From Google Reference: You can use the hl request parameter to identify the language of your graphical interface. The hl parameter value may affect search results, especially on international queries when language restriction (using the lr parameter) is not explicitly specified. Read more here.

locationUulestringoptional

The code for the exact location for the Google search. It's passed to Google Search as the uule URL query parameter. You can use the UULE code generator. Learn more about emulating local search.

wordsInTitlearrayoptionaldefault: []

Filters pages with specific words in the title. The scraper uses the intitle: operator, even for multiple words (e.g. recipe site:allrecipes.com intitle:"easy apple" intitle:pie). There's also a allintitle: operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the allintitle: operator specifically, you can include it in your custom queries from the queries field.

chatGptSearchobjectoptionaldefault: {"enableChatGpt":false}

Enable ChatGPT to retrieve AI-generated answers powered by OpenAI's search model. This feature is designed for cross-platform analysis, allowing you to directly compare other AI search model results against ChatGPT's perspective to identify narrative differences, coverage gaps, and search engine biases. The output includes query fan-out under queryFanOut, showing additional search queries the model generated to answer your question. Note: An additional fee applies per result when this feature is active. Please refer to the Pricing tab for your specific rate.

copilotSearchobjectoptionaldefault: {"enableCopilot":false}

Enable Copilot to retrieve AI-generated answers powered by Microsoft Copilot.

mobileResultsbooleanoptionaldefault: false

If checked the scraper will return results for mobile version of Google search. Otherwise desktop results are returned.

relatedToSitestringoptional

Filters pages related to a specific site, such as: related:example.com. Note that the site filter takes precedence over the relatedToSite filter. If both filters are set, the relatedToSite filter will be ignored and not added to the search queries.

focusOnPaidAdsbooleanoptionaldefault: false

Enable extraction of paid results (Google Ads). This feature improves ad detection accuracy by using an ad-specialized proxy to perform up to 3 retries for each search query. Best used for queries likely to show ads. An extra cost per search page applies when enabled, regardless of ads found. Pricing depends on your Apify subscription plan.

quickDateRangestringoptional

Filters results from a specific date range. d[number] specifies the number of past days (e.g. the past 10 days can be written as d10). The same applies to hours, weeks, months, and years: h[number], w[number], m[number], y[number]. Example for the past year: 'y1' or even 'y'. The value is passed to Google Search using the tbs URL query parameter, prefixed with qdr:. You should avoid combining this filter with the beforeDate and afterDate filters to prevent conflicts.

searchLanguagestringoptionaldefault: ""

Restricts search results to pages in a specific language. For example, choosing 'German' results in pages only in German. Passed to Google Search as the lr URL query parameter. Read more here.

forceExactMatchbooleanoptionaldefault: false

If checked, the scraper will search for the exact phrase in the query. This is done by wrapping the query in quotes. Note that this may return fewer results. Also note that if you're using operators such as OR or AND, the whole query will be wrapped in quotes, such as "Windows AND macOS". If you want to search for queries such as "Windows" AND "macOS", you need to specify them directly in the queries field.

maxPagesPerQueryintegeroptionaldefault: 1

Maximum number of pages to scrape per search query. Each page contains approximately 10 results.

perplexitySearchobjectoptionaldefault: {"returnImages":false,"enablePerplexity":false,"returnRelatedQuestions":false}

Enable Perplexity to retrieve AI-generated answers and citations using the Sonar model. This feature is designed for cross-platform analysis, allowing you to directly compare other AI search model results against Perplexity's perspective to identify narrative differences and coverage gaps. Note: An additional fee applies per result when this feature is active. Please refer to the Pricing tab for your specific rate.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

saveHtmlToKeyValueStorebooleanoptionaldefault: true

If checked the HTML of the Google Search results pages will be stored to the default key-value store and links to the files stored to the dataset under the htmlSnapshotUrl property. This is useful for debugging since you can easily view the pages in the browser. However, the use of this feature may slow down the Actor.

includeUnfilteredResultsbooleanoptionaldefault: false

If checked the lower quality results that Google normally filters out will be included.

disableGoogleSearchResultsbooleanoptionaldefault: false

When enabled, skips extraction of traditional organic search results and focuses exclusively on AI-powered search features (Google AI Mode, Perplexity AI, ChatGPT search, Copilot search, Gemini search). Use this option when you only need AI-generated answers and want to reduce processing time and costs by excluding standard search results.

leadsEnrichmentDepartmentsarrayoptional

You can use this filter to include only specific departments (like Sales, Marketing, or C-Suite). Note: This will only work if the ⏩ Add-on: Extract business leads information - Maximum leads per domain (maximumLeadsEnrichmentRecords) option is enabled. Please note that some job titles are sometimes miscategorized in the wrong departments.

verifyLeadsEnrichmentEmailsbooleanoptionaldefault: false

When enabled, verifies the email address of each lead extracted during business leads enrichment. Each lead receives an emailVerification object with the verification result and quality assessment. Requires business leads enrichment to be enabled.

maximumLeadsEnrichmentRecordsintegeroptionaldefault: 0

Enrich your results with detailed contact and company information, including employee names, job titles, emails, phone numbers, LinkedIn profiles, and key company data like industry and number of employees. This setting allows you to set the maximum number of leads records you want to scrape per each domain found. By default, it's set to 0 which means that no leads information will be scraped. ⚠️ Note that some of the fields contain personal data. GDPR protects personal data in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your use case is legitimate, please consult an attorney. To keep your leads relevant, we automatically filter out large chains and online platforms (e.g., social media, retail giants, food delivery services). ⚠️ Cost warning: This is a multiplier. Requesting 10 leads for 1,000 domains will attempt to find 10,000 total leads. You are only charged for leads successfully found.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape Google search results for 'best CRM software'"
  }
}'

CLI Usage

askfaro describe site-scrapers/google-search-scraper

Install pip install askfaro-cli, then askfaro auth login.

glassdoor-scraper

Glassdoor Jobs Scraper.

Usage-based · 3.5 credits per result

Example prompts

  • Scrape job listings from Glassdoor
  • Find open jobs on Glassdoor for a role and location

Parameters

countrystringrequired

Country where the target job listings are located

keywordstringrequired

Job title, skill, or company name to search for

currencystringoptional

Target currency for converting salary figures

distanceintegeroptional

Search radius in miles around the specified location

job_typestringoptional

Employment type to filter by: full-time, contract, etc.

locationstringoptional

City or region to focus the job search results on

max_resultsintegeroptionaldefault: 10

Maximum number of jobs to return

remote_onlybooleanoptional

Restrict results to remote-friendly positions only

posted_sincestringoptional

Only include listings posted within this timeframe

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape job listings from Glassdoor"
  }
}'

CLI Usage

askfaro describe site-scrapers/glassdoor-scraper

Install pip install askfaro-cli, then askfaro auth login.

ebay-sold-listings

eBay Sold Listings Search.

Usage-based · 5 credits per result

Example prompts

  • Get recent eBay sold prices for a collectible
  • Scrape sold listings and final sale prices for an item on eBay

Parameters

countintegeroptionaldefault: 25

Number of listings to scrape (default: 100)

searchstringoptional

Deprecated: alias for the single-keyword `keyword` field. Use the `keywords` array instead. Accepted for backward compatibility with callers that send `search`. Backslash-escaped quotes (\") in the value are unescaped before the search runs.

keywordstringoptional

Single search keyword. Deprecated: use the 'keywords' array field instead.

ebaySitestringoptionaldefault: "ebay.com"

eBay site to scrape from

keywordsarrayoptional

One or more search keywords. Each keyword runs as a separate search with the same filters applied to all.

maxPricenumberoptional

Maximum sold price filter (search-page filter).

minPricenumberoptional

Minimum sold price filter (search-page filter).

sortOrderstringoptionaldefault: "endedRecently"

Sort order for the sold search results page.

categoryIdstringoptionaldefault: "0"

eBay category filter

daysToScrapeintegeroptionaldefault: 30

Number of days back to scrape sold listings (default: 30)

itemLocationstringoptionaldefault: "default"

Search-page item location filter.

itemConditionstringoptionaldefault: "any"

Search-page condition filter.

subcategoryIdstringoptionaldefault: ""

Optional subcategory filter. Displayed as "Category -> Subcategory" for easier selection. If set, subcategory takes priority over the Category field (overrides _sacat). The output record will reflect the effective category ID and label used.

detailedSearchbooleanoptionaldefault: false

If enabled, visits each item detail page to extract item specifics, product details, breadcrumbs, condition, and other fields. Increases runtime and proxy usage.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get recent eBay sold prices for a collectible"
  }
}'

CLI Usage

askfaro describe site-scrapers/ebay-sold-listings

Install pip install askfaro-cli, then askfaro auth login.

google-flights

Google Flights API.

Usage-based · 0.0125 credits per page

Example prompts

  • Find flights from New York to London next month
  • Get Google Flights prices for a route and dates

Parameters

glstringoptionaldefault: "us"

Country code for results (e.g., 'us', 'uk', 'fr', 'de'). Default: 'us'

hlstringoptionaldefault: "en"

Language code for results (e.g., 'en', 'fr', 'de', 'es'). Default: 'en'

adultsintegeroptionaldefault: 1

Number of adult passengers (default: 1, minimum: 1)

infantsintegeroptionaldefault: 0

Number of infant passengers (default: 0, minimum: 0)

airlinesstringoptional

Comma-separated list of preferred airline codes (e.g., 'UA,AA,DL'). Optional.

childrenintegeroptionaldefault: 0

Number of child passengers (default: 0, minimum: 0)

currencystringoptionaldefault: "USD"

Currency code for prices (e.g., 'USD', 'EUR', 'GBP'). Default: 'USD'

max_pagesintegeroptionaldefault: 1

Maximum number of pages to fetch (0 = no limit, default: 1).

max_priceintegeroptional

Maximum price filter in the specified currency. Optional.

max_stopsintegeroptional

Maximum number of stops (0 = direct flights only, 1 = one stop max, null = no limit). Optional.

arrival_idstringoptional

Arrival airport code(s), comma-separated for multiple (e.g., 'JFK', 'SFO', 'LAX,SEA'). Required for one-way and round-trip searches. Not used for multi-city trips.

output_filestringoptional

Optional filename to save results. If not provided, will auto-generate based on route and parameters.

return_datestringoptional

Return date in YYYY-MM-DD format (e.g., '2025-11-30'). Optional, used for round-trip searches.

departure_idstringoptional

Departure airport code(s), comma-separated for multiple (e.g., 'LAX', 'JFK', 'CDG,ORY'). Required for one-way and round-trip searches. Not used for multi-city trips.

exclude_basicbooleanoptionaldefault: false

If true, filters out Economy flights that include carry-on bags and free seat selection. Optional.

outbound_datestringoptional

Departure date in YYYY-MM-DD format (e.g., '2025-11-25'). Required for one-way and round-trip searches. Not used for multi-city trips.

multi_city_jsonstringoptional

JSON string for multi-city trips. Format: [{"departure_id":"...","arrival_id":"...","date":"..."},...]. When provided, departure_id, arrival_id, and outbound_date are not required.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

fetch_booking_optionsbooleanoptionaldefault: false

If true, performs extra requests to retrieve detailed booking options (booking links, baggage fees, etc.). This increases API usage and is billed per booking option returned.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Find flights from New York to London next month"
  }
}'

CLI Usage

askfaro describe site-scrapers/google-flights

Install pip install askfaro-cli, then askfaro auth login.

instagram-scraper

Instagram Scraper.

Usage-based · 3.375 credits per result

Example prompts

  • Scrape an Instagram profile's posts and follower count
  • Get Instagram content for a hashtag or profile

Parameters

searchstringoptional

Search for Instagram hashtags, profiles, or places. Use `#` for hashtags, e.g. `#travel`.

directUrlsarrayoptional

Add one or more Instagram URLs to scrape. URL format must match your content type:/p/ for posts and comments/reel/ for reels/username/ for profile details Leave blank if using the search query instead.

searchTypestringoptionaldefault: "hashtag"

Hashtag search returns posts tagged with that term. Profile search returns matching accounts. Place search returns matching locations.

resultsTypestringoptionaldefault: "posts"

**Posts** returns a feed of content. **Profile, hashtag, or place details** returns metadata about the page: follower count, bio, post count, and profile picture. Comments only work with post URLs, e.g. `instagram.com/p/ABC123xyz/` not `instagram.com/username/`.

searchLimitintegeroptional

Set how many profiles, places, or hashtags to find. To limit posts per result, use Results limit per URL. Higher values increase compute usage and cost.

resultsLimitintegeroptionaldefault: 37

Set how many posts or comments to scrape per Instagram URL. Higher values increase compute usage and cost. Maximum 50 comments per post. Instagram may return fewer than 15 comments on some posts. Use `1` to retrieve a single post per page.

addParentDatabooleanoptionaldefault: false

This applies only to feed items. Adds a dataSource field to each result: profile posts are labeled `profile`, and tag posts are labeled `hashtag`.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

onlyPostsNewerThanstringoptional

Limit how far back to scrape. Enter a date in `YYYY-MM-DD`, ISO format, or as a relative value, e.g. `1 day`, `2 months`, `3 years`. Times are in UTC, not local time. New York is UTC-5 in winter, UTC-4 in summer. Pinned posts may still appear even with this filter set.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape an Instagram profile's posts and follower count"
  }
}'

CLI Usage

askfaro describe site-scrapers/instagram-scraper

Install pip install askfaro-cli, then askfaro auth login.

google-maps-contacts

Google Maps Email Extractor.

Usage-based · 6.25 credits per scraped place

Example prompts

  • Extract emails and phone numbers for businesses on Google Maps
  • Get contact details for restaurants in a city from Google Maps

Parameters

citystringoptional

Enter the city where the data extraction should be carried out, e.g., Pittsburgh. ⚠️ Do not include State or Country names here. ⚠️ Automatic City polygons may be smaller than expected (e.g., they don't include agglomeration areas). If you need that, set up the location using Country, State, County, City, or Postal code. For an even more precise location definition (, head over to 🛰 Custom search area section to create polygon shapes of the areas you want to scrape.

statestringoptional

Set a state where the data extraction should be carried out, e.g., Massachusetts (mainly for the US addresses).

countystringoptional

Set the county where the data extraction should be carried out. ⚠️ Note that county may represent different administrative areas in different countries: a county (e.g., US), regional district (e.g., Canada) or département (e.g., France).

websitestringoptionaldefault: "allPlaces"

Use this to exclude places without a website, or vice versa. This option is turned off by default.

languagestringoptionaldefault: "en"

Results details will show in this language.

startUrlsarrayoptional

Max 300 results per search URL. Valid format for URLs contains google.com/maps/. This feature also supports uncommon URL formats such as: google.com/maps?cid=***, goo.gl/maps, and custom place list URL.

postalCodestringoptional

Set the postal code of the area where the data extraction should be carried out, e.g., 10001. ⚠️ Combine Postal code only with 🗺 Country, never with 🌇 City. You can only input one postal code at a time.

countryCodestringoptional

Set the country where the data extraction should be carried out, e.g., United States.

maxQuestionsintegeroptionaldefault: 0

Set the number of questions per place you expect to scrape. If you fill in 0 or leave the field empty, only the first question and answer will be scraped. To extract all questions, type 999 into the field. ⚠️ Note that some of the fields contain personal data.

locationQuerystringoptional

Define location using free text. Simpler formats work best; e.g., use City + Country rather than City + Country + State. Verify with the OpenStreetMap webapp for visual validation of the exact area you want to cover. 💡 Pro tip: Always specify a location when searching for specific place names in the 🔍 Search terms field above. This helps narrow down results to the geographic area you're interested in and prevents getting results from unrelated locations. ⚠️ Automatically defined City polygons may be smaller than expected (e.g., they don't include agglomeration areas). If you need to define the whole city area, head over to the 📡 Geolocation parameters* section instead to select Country, State, County, City, or Postal code. For an even more precise location definition (especially when using City name as a starting point), head over to 🛰 Custom search area section to create polygon shapes of the areas you want to scrape. Note that 📍 Location settings always take priority over 📡 Geolocation* (so use either section but not both at the same time). For guidance and tricks on location definition, check our tutorial.

searchMatchingstringoptionaldefault: "all"

Restrict what places are scraped based on matching their name with provided 🔍 Search term. E.g., all places that have chicken in their name vs. places called Kentucky Fried Chicken.

skipClosedPlacesbooleanoptionaldefault: false

Skip places that are marked as temporary or permanently closed. Ideal for focusing on currently open places.

customGeolocationobjectoptional

Use this field to define the exact search area if other search area parameters don't work for you. See readme or our guide for details.

includeWebResultsbooleanoptionaldefault: false

Extract the "Web results" section located at the bottom of every place listing.

placeMinimumStarsstringoptionaldefault: ""

Scrape only places with a rating equal to or above the selected stars. Places without reviews will also be skipped. Keep in mind, filtering by reviews reduces the number of places found per credit spent, as many will be excluded.

scrapeDirectoriesbooleanoptionaldefault: false

Some places (e.g. malls) can have multiple businesses located inside them. This option will scrape inside the "Directory" or "At this place" as per different categories (example here). Turn this toggle on to include those places in your results. ⚠️ Note that that full place details needs to be scraped in order to scrape directories.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

searchStringsArrayarrayoptional

Type what you'd normally search for in the Google Maps search bar, like English breakfast or pet shelter. Aim for unique terms for faster processing. Using similar terms (e.g., bar vs. restaurant vs. cafe) may slightly increase your capture rate but is less efficient. ⚠️ Searching for a specific place? If you're looking for a particular business or location (e.g., M&M Indian Thai Halal Restaurant), make sure to also specify the city or country in the 📍 Location field below to get more accurate and reliable results. Without location context, Google Maps may return results from unexpected areas. ⚠️ Heads up: Adding a location directly to the search, e.g., restaurant Pittsburgh, can limit you to a maximum of 120 results per search term due to Google Maps' scrolling limit. You can also use direct place IDs here in the format place_id:ChIJ8_JBApXMDUcRDzXcYUPTGUY. See the detailed description.

categoryFilterWordsarrayoptional

You can limit the places that are scraped based on the Category filter; you can choose as many categories for one flat fee for the whole field. ⚠️ Using categories can sometimes lead to false negatives, as many places do not properly categorize themselves, and there are over 4,000 available categories which Google Maps has. Using categories might filter out places that you’d like to scrape. To avoid this problem, you must list all categories that you want to scrape, including synonyms, e.g., divorce lawyer, divorce attorney, divorce service, etc. See the detailed description.

scrapePlaceDetailPagebooleanoptionaldefault: false

Scrape detail pages of each place the Actor finds. This will slow down the Actor since it needs to open another page for each place individually. The fields available only when scrapePlaceDetailPage is enabled include: `reviewsDistribution`, `imageCategories`, popularTimes fields, `openingHours`, `BusinessConfirmationText`, `peopleAlsoSearch`, `reviewsTags`, `updatesFromCustomers`, `questionsAndAnswers`, `tableReservationLinks`, `orderBy`, `ownerUpdates` and hotel fields. Enabling this also ensures that `reviewsCount` will be scraped. This option needs to be enabled if you wish to use any of the options below.

maxCrawledPlacesPerSearchintegeroptionaldefault: 20

Number of results you expect to get per each Search term, Category or URL. The higher the number, the longer it will take. If you want to scrape all the places available, leave this field empty or use this section 🧭 Scrape all places on the map*.

scrapeSocialMediaProfilesobjectoptionaldefault: {"tiktoks":false,"twitters":false,"youtubes":false,"facebooks":false,"instagrams":false}

Enable enrichment for any social media profiles found. This add-on retrieves detailed public data for each profile, including profile names, follower/following counts, descriptions, post/video counts, and verification status. Pricing depends on your subscription plan (please see the 'Pricing' tab for details). You are charged a flat rate for the total number of profiles enriched, regardless of how many platforms (Facebook, YouTube, etc.) you select.Feature Dependency: To use this feature, the '⏩ Add-on: Company contacts enrichment (from website)' option will be automatically enabled. This ensures that all enriched social media data is correctly combined with the main contact record for each domain. Output: Enriched profiles are available in the Social profiles output view tab.

leadsEnrichmentDepartmentsarrayoptional

You can use this filter to include only specific departments (like Sales, Marketing, or C-Suite). Note: This will only work if the ⏩ Add-on: Extract business leads information - Maximum leads per place (maximumLeadsEnrichmentRecords) option is enabled. Please note that some job titles are sometimes miscategorized in the wrong departments.

verifyLeadsEnrichmentEmailsbooleanoptionaldefault: false

When enabled, verifies the email address of each lead extracted during business leads enrichment. Each lead receives an emailVerification object with the verification result and quality assessment. Requires business leads enrichment to be enabled.

maximumLeadsEnrichmentRecordsintegeroptionaldefault: 0

Enrich your results with detailed contact and company information, including employee names, job titles, emails, phone numbers, LinkedIn profiles, and key company data like industry and number of employees. This setting allows you to set the maximum number of leads records you want to scrape per each place found on the map (that has a website). By default, it's set to 0 which means that no leads information will be scraped. ⚠️ Note that some of the fields contain personal data. GDPR protects personal data in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your use case is legitimate, please consult an attorney. We exclude leads of big chains as these are not related to the local places: mcdonalds, starbucks, dominos, pizzahut, burgerking, kfc, subway, wendys, dunkindonuts, tacobell. ⚠️ Cost warning: This is a multiplier. Requesting 10 leads for 1,000 places will attempt to find 10,000 total leads. You are only charged for leads successfully found.

scrapeTableReservationProviderbooleanoptionaldefault: false

Scrape table reservation provider data like name, address, email or phone. This data is present only in restaurants that have blue "RESERVE A TABLE" button

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Extract emails and phone numbers for businesses on Google Maps"
  }
}'

CLI Usage

askfaro describe site-scrapers/google-maps-contacts

Install pip install askfaro-cli, then askfaro auth login.

facebook-posts-scraper

Facebook Posts Scraper.

Usage-based · 6.25 credits per post

Example prompts

  • Scrape posts from a Facebook page
  • Get recent posts and engagement from a public Facebook page

Parameters

startUrlsarrayrequired

Enter a valid Facebook page URL, e.g. https://www.facebook.com/humansofnewyork/. Note that you can only scrape public pages with this Actor, not personal profiles.

captionTextbooleanoptionaldefault: false

Extract video transcript (if available).

resultsLimitintegeroptionaldefault: 20

If this limit is not set, only the initial page of results will be extracted.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

onlyPostsNewerThanstringoptional

Scrape posts from the provided date to the present day (or date set in 'Older than'). The date should be in YYYY-MM-DD absolute format or in relative format, e.g., 1 day, 2 months, 3 years. The JSON input also supports adding time units (UTC timezone): Full or partial ISO timestamp (e.g., `2025-09-23T10:02:01`) as absolute time and relative time, e.g., `1 hour` or `2 minutes`.

onlyPostsOlderThanstringoptional

Scrape posts from the provided date to the past (or date set in 'Newer than'). The date should be in YYYY-MM-DD or full ISO absolute format or in relative format e.g. 1 days, 2 months, 3 years. The JSON input also supports adding time units (UTC timezone): Full or partial ISO timestamp (e.g., `2025-09-23T10:02:01`) as absolute time and relative time, e.g., `1 hour` or `2 minutes`.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape posts from a Facebook page"
  }
}'

CLI Usage

askfaro describe site-scrapers/facebook-posts-scraper

Install pip install askfaro-cli, then askfaro auth login.

yelp-scraper

Yelp Scraper.

Usage-based · 6.25 credits per result

Example prompts

  • Find restaurants on Yelp in San Francisco
  • Scrape Yelp business listings and reviews for a category and city

Parameters

querystringoptional

Enter a search term (e.g., 'Saloon') or a category name (e.g., 'Automotive'). If 'Search category' is enabled below, ensure you provide a valid Yelp category.

detailsstringoptionaldefault: "basic"

Choose between 'Basic' for core business information (faster) or 'Advanced' for full business metadata including detailed contact and operation info.

dishTypestringoptionaldefault: "menu"

Choose whether to collect the full structured menu or just the 'Popular Dishes' curated by Yelp users.

locationstringoptional

Enter a city, state to define your search area.

scrapeAllbooleanoptionaldefault: false

Ignore the 'Max Results' limit and collect every organic listing available for this query.

includeAdsbooleanoptionaldefault: false

When enabled, also collects promoted/sponsored listings alongside organic search results.

reviewsUrlarrayoptional

Provide business URLs or IDs to scrape their user reviews. Input example: https://www.yelp.com/biz/supermoon-bakehouse-new-york

businessUrlarrayoptional

Enter a list of Yelp business URLs or 22-character IDs to scrape full profile data. Input example: https://www.yelp.com/biz/supermoon-bakehouse-new-york

ratingReviewsstringoptionaldefault: "All_ratings"

Filter the reviews to only include specific star ratings.

categorySearchbooleanoptionaldefault: false

When enabled, the Actor will use Yelp's category search endpoint instead of a general keyword search.

reviewsSortingstringoptionaldefault: "Yelp_sort"

Choose how reviews should be ordered in the output.

businessUrlMenuarrayoptional

Provide business URLs or IDs to extract menus or top dishes. Input example: https://www.yelp.com/biz/supermoon-bakehouse-new-york

numberOfResultsintegeroptionaldefault: 100

Number of business listings to collect (minimum 40). The Actor will automatically handle pagination.

numberOfReviewsintegeroptionaldefault: 100

Specify the maximum number of reviews to collect per business profile (minimum 40).

scrapeAllReviewsbooleanoptionaldefault: false

Ignore the limit and collect every review available for the business.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Find restaurants on Yelp in San Francisco"
  }
}'

CLI Usage

askfaro describe site-scrapers/yelp-scraper

Install pip install askfaro-cli, then askfaro auth login.

tiktok-profile-scraper

TikTok Profile Scraper.

Usage-based · 5 credits per result

Example prompts

  • Get a TikTok profile's follower count and recent videos
  • Scrape stats and videos for a TikTok account

Parameters

profilesarrayrequired

Add one or multiple TikTok usernames or user IDs you want to scrape. You can enter the usernames one by one, or use the Bulk edit section to add a prepared list.

mostDiggsintegeroptional

Scrapes only videos with less hearts than the number you add. Doesn't work with date filters

leastDiggsintegeroptional

Scrapes only videos with no less hearts than the number you add. Doesn't work with date filters

newestPostDatestringoptional

Optional filter. Only videos uploaded before or on this date will be scraped.

profileSortingstringoptionaldefault: "latest"

Select Latest to scrape the most recent videos first, Oldest - the oldest videos first, Popular - the most popular videos first. Date filters only work with Latest and Oldest. Only supported for Videos section

resultsPerPageintegeroptionaldefault: 100

The number of posts that will be scraped from every profile.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

excludePinnedPostsbooleanoptionaldefault: false

Tick to exclude pinned posts from profiles. Pinned posts are usually the first videos on a profile's page.

shouldDownloadCoversbooleanoptionaldefault: false

Tick to download TikTok video cover images (thumbnails). Note that this will increase time and costs needed to extract the data.

shouldDownloadVideosbooleanoptionaldefault: false

Tick to download TikTok videos. Note that this will increase time and costs needed to extract the data.

videoKvStoreIdOrNamestringoptional

Name (or ID) of the Key Value Store where the videos and other media like thumbnails will be stored. Omit to store in the default one. Using this option will provide a named Key-Value store can help bypass data retention and store the content forever until the store is manually deleted. The Key-Value store's name can consist of a versatile combination of uppercase letters, lowercase letters, digits, or hyphens, all without any spaces.

oldestPostDateUnifiedstringoptional

Optional filter. Only videos uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting 1 will get you only today's posts, 2 - yesterday's and today's, and so on.

profileScrapeSectionsarrayoptionaldefault: ["videos"]

If a profile has reposted videos, you can scrape them by selecting 'Reposts'

shouldDownloadAvatarsbooleanoptionaldefault: false

Tick to download authors' profile pictures. Note that this will increase time and costs needed to extract the data.

maxFollowersPerProfileintegeroptional

Optional charged filter. Scrapes only profiles with less followers than the number you add.

maxFollowingPerProfileintegeroptional

Optional charged filter. Scrapes only profiles with less following profiles than the number you add.

downloadSubtitlesOptionsstringoptionaldefault: "NEVER_DOWNLOAD_SUBTITLES"

Choose how to handle subtitles and audio transcription for input videos. Subtitles are provided by TikTok for some videos, and transcription means that this Actor will use speech-to-text AI to generate video transcript. Transcripts are charged as an extra event according to your plan.

shouldDownloadSlideshowImagesbooleanoptionaldefault: false

Tick to download TikTok slideshow images. Note that this will increase costs and time required for scraping.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get a TikTok profile's follower count and recent videos"
  }
}'

CLI Usage

askfaro describe site-scrapers/tiktok-profile-scraper

Install pip install askfaro-cli, then askfaro auth login.

google-news-scraper

Google News Scraper.

Usage-based · 5 credits per result

Example prompts

  • Get Google News articles about a company
  • Scrape recent news headlines for a topic from Google News

Parameters

topicsarrayoptionaldefault: []

Select one or more predefined Google News topics to scrape.

keywordsarrayoptionaldefault: []

List of keywords to search for. You can use Google News search operators: - Use '-' to exclude words (e.g. 'bitcoin -ethereum') - Use 'site:' to filter by specific website (e.g. 'bitcoin site:cnn.com') - Use 'OR' to search for multiple terms (e.g. 'bitcoin OR ethereum') - Use quotes for exact match (e.g. '"bitcoin price"')

timeframestringoptionaldefault: "1d"

Time period for the news search. Note: this filter applies mainly to keyword searches. Topic pages return their own curated results.

topicUrlsarrayoptionaldefault: []

Provide custom Google News topic or section URLs to scrape. Useful for niche topics not in the predefined list. Example: https://news.google.com/topics/CAAqJggKIiBDQkFTRWdvSUwyMHZNRGx1YlY4U0FtVnVHZ0pWVXlnQVAB

decodeUrlsbooleanoptionaldefault: false

If enabled, decodes Google News URLs to get the original article URLs. Note: This will significantly slow down the scraping process as each URL needs to be decoded individually.

maxArticlesintegeroptionaldefault: 10

Maximum number of news to extract per keyword or topic (0 = no limit)

extractImagesbooleanoptionaldefault: true

Fetches the og:image from each article page when no image is available (mainly for RSS/topic results). When this option is not explicitly set, images are extracted by default. Toggle OFF to skip image extraction and speed up scraping.

region_languagestringoptionaldefault: "US:en"

Region and language for news search

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

proxyConfigurationobjectoptionaldefault: {"groups":["RESIDENTIAL"],"useApifyProxy":true}

Configure Apify Proxy. Residential proxies recommended for best results.

extractDescriptionsbooleanoptionaldefault: false

If enabled, extracts the meta description from each article page. Note: This will significantly slow down the scraping process.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get Google News articles about a company"
  }
}'

CLI Usage

askfaro describe site-scrapers/google-news-scraper

Install pip install askfaro-cli, then askfaro auth login.

facebook-comments-scraper

Facebook Comments Scraper.

Usage-based · 3.125 credits per comment

Example prompts

  • Scrape comments from a Facebook post
  • Get all comments and reactions on a public Facebook post

Parameters

startUrlsarrayrequired

Valid facebook URL

viewOptionstringoptionaldefault: "RANKED_UNFILTERED"

Choose the way the comments are sorted

resultsLimitintegeroptionaldefault: 40

If this limit is not set as many results as possible are returned

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

includeNestedCommentsbooleanoptionaldefault: false

If checked, the actor will return up to 3 levels of comments/replies for each post. Note that each reply/comment will be returned as a separate result.

onlyCommentsNewerThanstringoptional

Limit how far back to the history the scraper should go. The date should be in YYYY-MM-DD or full ISO absolute format or in relative format e.g. 1 year, 2 months, 3 days, 4 hours, or 5 minutes. All time values are taken in UTC timezone. This add-on feature is billed separately.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape comments from a Facebook post"
  }
}'

CLI Usage

askfaro describe site-scrapers/facebook-comments-scraper

Install pip install askfaro-cli, then askfaro auth login.

facebook-ads-library

Facebook Ad Library Scraper.

Usage-based · 0.9375 credits per ad

Example prompts

  • Find active Facebook ads a brand is running
  • Scrape ads for a company from the Facebook Ad Library

Parameters

urlsarrayrequired

List of facebook ads search URLs or Page URLs to scrape ads from

countintegeroptionaldefault: 100

Leave this field empty if you want to limit number of ads scraped

proxyobjectoptional

You can use this option to customise the proxy country

runTagstringoptional

Add this value to 'runTag' column in the output

limitPerSourceintegeroptional

Limit number of ads scraped per input URL. Leave it blank to scrape all available ads ℹ️ Actual number might exceed the given limit by upto 30

scrapeAdDetailsbooleanoptional

Enable this option to scrape ads details such as EU Reach info

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

scrapePageAds.periodstringoptionaldefault: ""

Search ads in given date range

scrapePageAds.sortBystringoptionaldefault: "impressions_desc"

Sort by impressions or date. Default: Impressions

scrapePageAds.countryCodestringoptionaldefault: "ALL"

2-letter ISO country code (ISO 3166-1 alpha-2). This should be the official uppercase country code, such as `IN` for India, `US` for United States, etc. Use `ALL` for targeting all countries

scrapePageAds.activeStatusstringoptionaldefault: "all"

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Find active Facebook ads a brand is running"
  }
}'

CLI Usage

askfaro describe site-scrapers/facebook-ads-library

Install pip install askfaro-cli, then askfaro auth login.

linkedin-profile-posts

LinkedIn Profile Posts Scraper.

Usage-based · 2.5 credits per post

Example prompts

  • Get recent posts from a LinkedIn profile
  • Scrape what a person has been posting on LinkedIn

Parameters

maxPostsintegeroptionaldefault: 5

Maximum number of posts to scrape per each profile or company. Default is 10. This overrides pagination. If you set this to 0, it will scrape all posts.

targetUrlsarrayoptional

List of LinkedIn profile or company URLs to scrape. Example: `https://www.linkedin.com/in/satyanadella/` will fetch posted or re-posted content by Bill Gates.

maxCommentsintegeroptional

Maximum number of comments to scrape per post. Default is 5.

postedLimitstringoptional

Fetch posts no older than X time. Options: '24h', 'week', 'month'.

maxReactionsintegeroptional

Maximum number of reactions to scrape per post. Default is 5.

includeRepostsbooleanoptionaldefault: true

Include reposts (shared posts without comments). By default, all posts are scraped.

scrapeCommentsbooleanoptionaldefault: false

Scrape comments of posts.

postedLimitDatestringoptional

Scrape posts from now up to and including this date. It supports the Date time string format. For example, "2011-10-10", or "2011-10-10T14:48:00.000+09:00" or a timestamp: "628021800000"

scrapeReactionsbooleanoptionaldefault: false

Scrape reactions of posts.

includeQuotePostsbooleanoptionaldefault: true

Include quote posts (shared posts with comments). By default, all posts are scraped.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

postNestedCommentsbooleanoptional

Whether to add comments items inside post items. In a case of hundreds of comments, the Actor might hit the max item size limit and won't be able to save a post.

commentsPostedLimitstringoptional

Fetch comments no older than X time. Options: '24h', 'week', 'month'.

postNestedReactionsbooleanoptional

Whether to add reactions items inside post items. In a case of hundreds of reactions, the Actor might hit the max item size limit and won't be able to save a post.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get recent posts from a LinkedIn profile"
  }
}'

CLI Usage

askfaro describe site-scrapers/linkedin-profile-posts

Install pip install askfaro-cli, then askfaro auth login.

linkedin-post-search

LinkedIn Post Search Scraper.

Usage-based · 2.5 credits per post

Example prompts

  • Search LinkedIn posts for a keyword
  • Find recent LinkedIn posts mentioning a topic

Parameters

sortBystringoptional

Sort by 'relevance' or 'date'.

maxPostsintegeroptionaldefault: 20

Maximum number of posts to scrape per each search query. If you set this to 0, it will scrape all posts.

startPageintegeroptionaldefault: 1

The page number to start scraping from.

authorUrlsarrayoptional

List of LinkedIn profile or company URLs to scrape. Example: `https://www.linkedin.com/in/williamhgates` will fetch posted or re-posted content by Bill Gates.

contentTypestringoptional

Filter posts by content type. For example, if you choose 'Videos', it will scrape only posts containing videos.

maxCommentsintegeroptional

Maximum number of comments to scrape per post.

postedLimitstringoptional

Fetch posts no older than X time. Options: '1h', '24h', 'week', 'month'.

scrapePagesintegeroptional

The number of search pages to scrape. Each page contains 100 posts

maxReactionsintegeroptional

Maximum number of reactions to scrape per post. Default is 5.

searchQueriesarrayoptional

Queries to search LinkedIn posts. The same query as you would use in the LinkedIn search bar.

authorKeywordsstringoptional

Scrape posts of profile-authors whose profiles contain at least one of these keywords in the headline or job title sections.

scrapeCommentsbooleanoptional

Scrape comments of posts.

postedLimitDatestringoptional

Scrape posts from now up to and including this date. It supports the Date time string format. For example, "2011-10-10", or "2011-10-10T14:48:00.000+09:00" or a timestamp: "628021800000"

scrapeReactionsbooleanoptional

Scrape reactions of posts.

authorsCompaniesarrayoptional

Scrape posts of profile-authors who assigned to LinkedIn Company Names of these companies. Example: `Google` will fetch posts of Google employees or ex-employees in some cases.

mentioningMemberarrayoptional

List of LinkedIn profile URLs of members mentioned in posts. Example: `https://www.linkedin.com/in/williamhgates` will fetch posts mentioning Bill Gates.

authorsIndustryIdarrayoptional

Scrape posts of profile-authors who assigned to LinkedIn Industry IDs of these industries. Full list: https://github.com/HarvestAPI/linkedin-industry-codes-v2/blob/main/linkedin_industry_code_v2_all_eng.csv

mentioningCompanyarrayoptional

List of LinkedIn Company Names mentioned in posts. Example: `https://www.linkedin.com/company/google` will fetch posts mentioning Google.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

postNestedCommentsbooleanoptional

Whether to add comments items inside post items. In a case of hundreds of comments, the Actor might hit the max item size limit and won't be able to save a post.

profileScraperModestringoptionaldefault: "short"

Choose the mode for scraping LinkedIn profiles. The Short mode provides basic information, while the Full mode includes full detailed profile data.

commentsPostedLimitstringoptional

Fetch comments no older than X time. Options: '1h', '24h', 'week', 'month'.

postNestedReactionsbooleanoptional

Whether to add reactions items inside post items. In a case of hundreds of reactions, the Actor might hit the max item size limit and won't be able to save a post.

commentsProfileScraperModestringoptionaldefault: "short"

Choose the mode for scraping LinkedIn profiles. The Short mode provides basic information, while the Full mode includes full detailed profile data.

reactionsProfileScraperModestringoptionaldefault: "short"

Choose the mode for scraping LinkedIn profiles. The Short mode provides basic information, while the Full mode includes full detailed profile data.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Search LinkedIn posts for a keyword"
  }
}'

CLI Usage

askfaro describe site-scrapers/linkedin-post-search

Install pip install askfaro-cli, then askfaro auth login.

reddit-scraper

Reddit Scraper.

Usage-based · 5 credits per result stored

Example prompts

  • Scrape posts from a subreddit
  • Get top posts and comments from r/technology

Parameters

sortstringoptionaldefault: "new"

Sort search by Relevance, Hot, Top, New or Comments

timestringoptional

Filter posts by last hour, week, day, month or year

proxyobjectrequireddefault: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}

Either use Apify proxy, or provide your own proxy servers.

maxItemsintegeroptionaldefault: 10

The maximum number of items that will be saved in the dataset. If you are scrapping for Communities&Users, remember to consider that each category inside a community is saved as a separated item.

searchesarrayoptional

Here you can provide a search query which will be used to search Reddit`s topics.

debugModebooleanoptionaldefault: false

Activate to see detailed logs

startUrlsarrayoptional

If you already have URL(s) of page(s) you wish to scrape, you can set them here. If you want to use the search field below, remove all startUrls here.

includeNSFWbooleanoptionaldefault: true

You can choose to include or exclude NSFW content from your search

maxCommentsintegeroptionaldefault: 10

The maximum number of comments that will be scraped for each Comments Page. If you don't want to scrape comments you can set this to zero.

searchPostsbooleanoptionaldefault: true

Will search for posts with the provided search

searchUsersbooleanoptionaldefault: false

Will search for users with the provided search

maxPostCountintegeroptionaldefault: 10

The maximum number of posts that will be scraped for each Posts Page or Communities&Users URL

maxUserCountintegeroptionaldefault: 2

The maximum number of `Users`'s pages that will be scraped.

skipCommentsbooleanoptionaldefault: false

This will skip scrapping comments when going through posts

postDateLimitstringoptional

Use this value to only retrieve posts published after a specific date.

scrollTimeoutintegeroptionaldefault: 40

Set the timeout in seconds in which the page will stop scrolling down to load new items

skipCommunitybooleanoptionaldefault: false

This will skip scrapping community info but will still get community posts if they were not skipped.

skipUserPostsbooleanoptionaldefault: false

This will skip scrapping user posts when going through user activity

searchCommentsbooleanoptionaldefault: false

Will search for comments with the provided search

ignoreStartUrlsbooleanoptionaldefault: false

Mainly used as a fix for ignoring starUrl on Zapier

commentDateLimitstringoptional

Use this value to only retrieve comments published after a specific date inside a post.

searchCommunitiesbooleanoptionaldefault: false

Will search for communities with the provided search

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

maxCommunitiesCountintegeroptionaldefault: 2

The maximum number of `Communities`'s pages that will be scraped if your search or startUrl is a Communities type.

searchCommunityNamestringoptional

If provided, the search will be performed only inside this community (e.g., 'programming').

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape posts from a subreddit"
  }
}'

CLI Usage

askfaro describe site-scrapers/reddit-scraper

Install pip install askfaro-cli, then askfaro auth login.

youtube-channel-scraper

YouTube Channel Scraper.

Usage-based · 1.625 credits per video

Example prompts

  • Get all videos from a YouTube channel
  • Scrape a YouTube channel's video list and stats

Parameters

startUrlsarrayrequired

Enter a link to a channel. You can also import a CSV file or Google Sheet with a list of URLs.

maxResultsintegeroptionaldefault: 10

Limit the number of regular videos (not streams, not shorts) you want to get from one channel. If you use several urls on the input you will get this number for each channel.

sortVideosBystringoptional

Maps to the sorting buttons on the top of the channel's 'Videos', 'Shorts' and 'Live' pages.

oldestPostDatestringoptional

Only posts uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting 1 day will get you only today's posts, 2 days - yesterday's and today's, and so on. Note, that if you select this, sorting parameter will be auto-reset to NEWEST

maxResultStreamsintegeroptionaldefault: 0

Limit the number of Stream videos you want to get from the channel.

maxResultsShortsintegeroptionaldefault: 0

Limit the number of Shorts videos you want to get from the channel.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get all videos from a YouTube channel"
  }
}'

CLI Usage

askfaro describe site-scrapers/youtube-channel-scraper

Install pip install askfaro-cli, then askfaro auth login.

linkedin-company-scraper

LinkedIn Company Details Scraper.

Usage-based · 5 credits per company

Example prompts

  • Get company details from a LinkedIn company page
  • Scrape employee count, industry, and about info for a company on LinkedIn

Parameters

searchesarrayoptional

List of company names to search on LinkedIn

companiesarrayoptional

List of LinkedIn company URLs

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get company details from a LinkedIn company page"
  }
}'

CLI Usage

askfaro describe site-scrapers/linkedin-company-scraper

Install pip install askfaro-cli, then askfaro auth login.

linkedin-jobs-scraper

LinkedIn Jobs Scraper.

Usage-based · 1.25 credits per result

Example prompts

  • Find jobs on LinkedIn for 'product manager' in London
  • Scrape LinkedIn job postings for a search and location

Parameters

urlsarrayrequired

Go to linkedin jobs search page on incognito window (to access public version), search with required filters and once you are done, copy the full URL from address bar and pass it here. You can pass multiple search URLs

countintegeroptionaldefault: 100

Limit number of jobs scraped

splitCountrystringoptional

Select the country whose cities will be used to split the search. Only used when 'Split search by city locations' is enabled. Required to when 'Split search by city locations' is enabled.

scrapeCompanybooleanoptionaldefault: true

This will require additional scraping requests for each job record and take longer to scrape

splitByLocationbooleanoptionaldefault: false

Enable this to split your search by cities within a country. This helps bypass LinkedIn's 1000 job limit per search URL by creating separate searches for each city. This will overwrite the location filter in input search URLs.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Find jobs on LinkedIn for 'product manager' in London"
  }
}'

CLI Usage

askfaro describe site-scrapers/linkedin-jobs-scraper

Install pip install askfaro-cli, then askfaro auth login.

amazon-product-scraper

Amazon Product Scraper.

Usage-based · 6.25 credits per result

Example prompts

  • Get the price and details for an Amazon product
  • Scrape title, price, and rating from an Amazon listing

Parameters

zipCodestringoptional

The zip code to use as the delivery location. This is useful for more precise location settings, especially in larger countries.

languagestringoptional

Language to use on Amazon. **Disclaimer**: each Amazon domain has a different set of supported languages. If you choose a language that is not supported by the domain, the scraper will use the default language of the domain.

maxOffersintegeroptionaldefault: 0

Enter the maximum number of offers you want to scrape per each product. This will let the scraper know when to stop. Note that this **will increase the number of requests** and **extend the scraping time**.

countryCodestringoptional

The country code to use as the delivery location.

proxyCountrystringoptionaldefault: "AUTO_SELECT_PROXY_COUNTRY"

You can set proxy country to **avoid geo-blocking** and **access region-specific content**. Amazon shows you the products that can be shipped to your address based on the proxy you use. *By default*, the scraper **automatically selects** the **proxy country** based on the used Amazon website domain, ensuring low blocking rates and results relevant to the base domain.

scrapeSellersbooleanoptionaldefault: false

Enable this option to extract further information about sellers of the product. Scrapes the featured offer seller (main seller). This option goes hand in hand with the `maxOffers` option bby scraping the seller of each offer. If you set `maxOffers` to 0, only the featured offer seller will be scraped. Note that this **will increase the number of requests** and **extend the scraping time**.

useCaptchaSolverbooleanoptionaldefault: false

If enabled the scraper will automatically solve captchas thrown by Amazon. This will decrease the amount of request retries and increase the speed of the scraper. ***IMPORTANT*** - This option works well only for the `'.com'` Amazon domain, but even for that one Amazon doesn't show a few product fields after solving a captcha (specifically: 'attributes', 'manufacturer attributes', and 'bestseller ranks')

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

maxItemsPerStartUrlintegeroptionaldefault: 20

Enter the maximum number of results you want to scrape per each star URL. This will let the scraper know when to stop.

scrapeProductDetailsbooleanoptionaldefault: true

If enabled, the scraper will extract each found product from the category page in detail (this is the default behavior). If disabled, the scraper will only extract the quick product information from the category page. Useful for faster and more lightweight searches for products.

categoryOrProductUrlsarrayrequired

Use a link to the Amazon category you want to scrape, e.g. video games - https://www.amazon.com/s?bbn=16225016011&rh=n%3A20972781011, https://www.amazon.com/dp/B0B3BVWJ6Y. You can also filter within the category with almost any filter available, i.e. price, manufacturer, rating, etc. By using a different URL you can also choose a different Amazon country, e.g. Germany: https://www.amazon.de/. You don't need to set a proxy country to do that.

locationDeliverableRoutesarrayoptionaldefault: ["PRODUCT","SEARCH","OFFERS"]

The list of routes/page types, for which the deliverable location settings should be applied. - This is useful for speeding up the scraping process by not applying the location settings to all pages, for which you don't need the localized data for. - For example, you can set it to `['SEARCH', 'PRODUCT']` to apply the location settings only to search and product pages. - By default, all pages are included.

maxSearchPagesPerStartUrlintegeroptional

Enter the maximum number of search pages to scrape for each start URL. E.g. only scrape the first 5 pages. This field can also be used with the `maxItemsPerStartUrl` option, the scraper will stop after either one of these limits is reached.

scrapeProductVariantPricesbooleanoptionaldefault: false

Enable this option to extract prices of different variations of a product. Useful when you need prices for each variant. Note that this **will increase the number of requests** and **extend the scraping time**.

maxProductVariantsAsSeparateResultsintegeroptional

Enter the maximum number of product variants you want to scrape per each product, outputted as separate results. **Please beware** that **you can already get** most of the **variant details** changes, in the **`variantDetails` field**, which is outputted by default. Note that this **will increase the number of requests** and **extend the scraping time**.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get the price and details for an Amazon product"
  }
}'

CLI Usage

askfaro describe site-scrapers/amazon-product-scraper

Install pip install askfaro-cli, then askfaro auth login.

youtube-comments-scraper

YouTube Comments Scraper.

Usage-based · 2.5 credits per comment

Example prompts

  • Scrape comments from a YouTube video
  • Get the top comments on a YouTube video

Parameters

startUrlsarrayrequireddefault: []

Enter a link to a specific Youtube video YouTube video. You can also import a CSV file or Google Sheet with a list of URLs.

maxCommentsintegeroptionaldefault: 10

Limit the number of comments you want to scrape per video.

sortCommentsBystringoptionaldefault: "NEWEST_FIRST"

Select Youtube sorting parameter for comments

oldestCommentDatestringoptional

Only comments published after or on this date will be scraped. Alternatively, specify how old the scraped comments should be. Putting 1 day will get you only today's comments, 2 days - yesterday's and today's, and so on. Note, that if you select this, sorting parameter will be auto-reset to newest first

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape comments from a YouTube video"
  }
}'

CLI Usage

askfaro describe site-scrapers/youtube-comments-scraper

Install pip install askfaro-cli, then askfaro auth login.

youtube-shorts-scraper

YouTube Shorts Scraper.

Usage-based · 5 credits per short

Example prompts

  • Scrape YouTube Shorts from a channel
  • Get YouTube Shorts for a search term

Parameters

channelsarrayrequired

Enter a username of a channel (without @ sign) or a link to it (e.g. https://www.youtube.com/c/Apify).

oldestPostDatestringoptional

Only posts uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting 1 day will get you only today's posts, 2 days - yesterday's and today's, and so on. Note, that if you select this, sorting parameter will be auto-reset to NEWEST

maxResultsShortsintegeroptionaldefault: 10

Limit the number of Shorts videos you want to crawl from the channel.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

sortChannelShortsBystringoptional

Maps to the three sorting buttons on the top of the channel shorts page.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape YouTube Shorts from a channel"
  }
}'

CLI Usage

askfaro describe site-scrapers/youtube-shorts-scraper

Install pip install askfaro-cli, then askfaro auth login.

youtube-transcript

YouTube Video Transcript.

Usage-based · 6.25 credits per result

Example prompts

  • Get the transcript of a YouTube video
  • Pull the captions text from a YouTube URL

Parameters

end_datestringoptional

End date for filtering videos by upload date (format: YYYY-MM-DD or ISO 8601, optional). Only applicable and used with channel_url; ignored for youtube_url. Videos uploaded on or before this date will be fetched.

languagestringoptional

Language of the subtitles in ISO 639-1 format, e.g., `en`, `fr`. Applicable to both youtube_url and channel_url. Leave blank for default language.

max_videosintegeroptionaldefault: 10

Maximum number of videos to fetch from the channel (optional, default: 10, range: 1 to 200). Only applicable and used with channel_url; ignored for youtube_url. Combine with start_date/end_date for filtered results.

start_datestringoptional

Start date for filtering videos by upload date (format: YYYY-MM-DD or ISO 8601, optional). Only applicable and used with channel_url; ignored for youtube_url. Videos uploaded on or after this date will be fetched.

channel_urlstringoptional

Enter a valid YouTube channel URL (e.g., https://www.youtube.com/channel/UCxxxxxxxxxxxxxxxxxxxxxx or https://www.youtube.com/@channelhandle). Use this to fetch videos from the channel, paired with 'max_videos', 'start_date', and 'end_date' for limiting and filtering results.

youtube_urlstringoptional

Enter a valid YouTube video URL (e.g., https://www.youtube.com/watch?v=video_id, https://youtu.be/video_id, or https://www.youtube.com/shorts/video_id). Use this for fetching a single video, paired with 'language' for transcript. Do not combine with channel filtering fields.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

include_transcript_textbooleanoptionaldefault: false

Include the full transcript as a plain string without timestamps (transcript_text field). Default is off to reduce response size. Enable this if you need the transcript as a single text block.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get the transcript of a YouTube video"
  }
}'

CLI Usage

askfaro describe site-scrapers/youtube-transcript

Install pip install askfaro-cli, then askfaro auth login.

google-maps-scraper

Google Maps Scraper.

Usage-based · 5 credits per scraped place

Example prompts

  • Find coffee shops near a location on Google Maps
  • Scrape business listings with ratings and addresses from Google Maps

Parameters

citystringoptional

Enter the city where the data extraction should be carried out, e.g., Pittsburgh. ⚠️ Do not include State or Country names here. ⚠️ Automatic City polygons may be smaller than expected (e.g., they don't include agglomeration areas). If you need that, set up the location using Country, State, County, City, or Postal code. For an even more precise location definition (, head over to 🛰 Custom search area section to create polygon shapes of the areas you want to scrape.

statestringoptional

Set a state where the data extraction should be carried out, e.g., Massachusetts (mainly for the US addresses).

countystringoptional

Set the county where the data extraction should be carried out. ⚠️ Note that county may represent different administrative areas in different countries: a county (e.g., US), regional district (e.g., Canada) or département (e.g., France).

websitestringoptionaldefault: "allPlaces"

Use this to exclude places without a website, or vice versa. This option is turned off by default.

languagestringoptionaldefault: "en"

Results details will show in this language.

placeIdsarrayoptional

List of place IDs. You can add place IDs one by one or upload a list using the Bulk edit option. Place ID has format `ChIJreV9aqYWdkgROM_boL6YbwA`

maxImagesintegeroptionaldefault: 0

Set the number of images per place you expect to scrape. Please be aware that the `Add-on: additional place details scraped` charge applies to each place you scrape for images, as the Actor must access the detail page first. All prices are determined by your subscription plan. To extract all images, set this to 99999. If left empty, no images will be scraped. The higher the number, the slower the search.

startUrlsarrayoptional

Max 300 results per search URL. Valid format for URLs contains google.com/maps/. This feature also supports uncommon URL formats such as: google.com/maps?cid=***, goo.gl/maps, and custom place list URL.

maxReviewsintegeroptionaldefault: 0

Set the number of reviews you expect to get per place. Please be aware that the `Add-on: additional place details scraped` charge applies to each place you scrape for reviews, as the Actor must access the detail page first. All prices are determined by your subscription plan. To extract all reviews, set this to 99999. If left empty, no reviews will be scraped. Each output place item can contain maximum 5,000 reviews so in case more reviews are extracted, a duplicate place is stored with the next 5,000 reviews and so on. ⚠️ Enabling this feature might slow the search down.

postalCodestringoptional

Set the postal code of the area where the data extraction should be carried out, e.g., 10001. ⚠️ Combine Postal code only with 🗺 Country, never with 🌇 City. You can only input one postal code at a time.

countryCodestringoptional

Set the country where the data extraction should be carried out, e.g., United States.

reviewsSortstringoptionaldefault: "newest"

Define the order in which reviews should be sorted.

maxQuestionsintegeroptionaldefault: 0

Set the number of questions per place you expect to scrape. If you fill in 0 or leave the field empty, only the first question and answer will be scraped. To extract all questions, type 999 into the field. ⚠️ Note that some of the fields contain personal data.

locationQuerystringoptional

Define location using free text. Simpler formats work best; e.g., use City + Country rather than City + Country + State. Verify with the OpenStreetMap webapp for visual validation of the exact area you want to cover. 💡 Pro tip: Always specify a location when searching for specific place names in the 🔍 Search terms field above. This helps narrow down results to the geographic area you're interested in and prevents getting results from unrelated locations. ⚠️ Automatically defined City polygons may be smaller than expected (e.g., they don't include agglomeration areas). If you need to define the whole city area, head over to the 📡 Geolocation parameters* section instead to select Country, State, County, City, or Postal code. For an even more precise location definition (especially when using City name as a starting point), head over to 🛰 Custom search area section to create polygon shapes of the areas you want to scrape. Note that 📍 Location settings always take priority over 📡 Geolocation* (so use either section but not both at the same time). For guidance and tricks on location definition, check our tutorial.

reviewsOriginstringoptionaldefault: "all"

Select whether you want all reviews (from Google, Tripadvisor, etc.) or only reviews from Google

scrapeContactsbooleanoptionaldefault: false

Enrich Google Maps places with contact details extracted from the business website, including business emails and social media profiles (Meta, LinkedIn, X, etc). Significant discounts are available on higher-tier plans. Please see the Pricing tab for your exact rate based on your subscription. We exclude contacts of big chains: mcdonalds, starbucks, dominos, pizzahut, burgerking, kfc, subway, wendys, dunkindonuts, tacobell.

searchMatchingstringoptionaldefault: "all"

Restrict what places are scraped based on matching their name with provided 🔍 Search term. E.g., all places that have chicken in their name vs. places called Kentucky Fried Chicken.

reviewsStartDatestringoptional

Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). JSON input also supports adding time in both absolute (ISO standard, e.g. `2024-05-03T20:00:00`) and relative (e.g. `3 hours`) formats. Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `minutes`, `hours`, `days`, `weeks`, `months`, `years`. ⚠️ Heads up: If this parameter is specified, you must choose the 'Newest' sort by value. The reason for this is that with this parameter entered, the actor stops scraping reviews as soon as it finds the first review that's older than the specified date. If the sorting is not set to 'Newest', it might encounter a review older than the specified date before it reaches the desired review count and not scrape the desired amount of reviews.

skipClosedPlacesbooleanoptionaldefault: false

Skip places that are marked as temporary or permanently closed. Ideal for focusing on currently open places.

customGeolocationobjectoptional

Use this field to define the exact search area if other search area parameters don't work for you. See readme or our guide for details.

includeWebResultsbooleanoptionaldefault: false

Extract the "Web results" section located at the bottom of every place listing.

placeMinimumStarsstringoptionaldefault: ""

Scrape only places with a rating equal to or above the selected stars. Places without reviews will also be skipped. Keep in mind, filtering by reviews reduces the number of places found per credit spent, as many will be excluded.

scrapeDirectoriesbooleanoptionaldefault: false

Some places (e.g. malls) can have multiple businesses located inside them. This option will scrape inside the "Directory" or "At this place" as per different categories (example here). Turn this toggle on to include those places in your results. ⚠️ Note that that full place details needs to be scraped in order to scrape directories.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

scrapeImageAuthorsbooleanoptionaldefault: false

Include the author name for each image. ⚠️ Enabling this toggle may slow down processing as it requires fetching information for each image individually.

searchStringsArrayarrayoptional

Type what you'd normally search for in the Google Maps search bar, like English breakfast or pet shelter. Aim for unique terms for faster processing. Using similar terms (e.g., bar vs. restaurant vs. cafe) may slightly increase your capture rate but is less efficient. ⚠️ Searching for a specific place? If you're looking for a particular business or location (e.g., M&M Indian Thai Halal Restaurant), make sure to also specify the city or country in the 📍 Location field below to get more accurate and reliable results. Without location context, Google Maps may return results from unexpected areas. ⚠️ Heads up: Adding a location directly to the search, e.g., restaurant Pittsburgh, can limit you to a maximum of 120 results per search term due to Google Maps' scrolling limit. You can also use direct place IDs here in the format place_id:ChIJ8_JBApXMDUcRDzXcYUPTGUY. See the detailed description.

categoryFilterWordsarrayoptional

You can limit the places that are scraped based on the Category filter; you can choose as many categories for one flat fee for the whole field. ⚠️ Using categories can sometimes lead to false negatives, as many places do not properly categorize themselves, and there are over 4,000 available categories which Google Maps has. Using categories might filter out places that you’d like to scrape. To avoid this problem, you must list all categories that you want to scrape, including synonyms, e.g., divorce lawyer, divorce attorney, divorce service, etc. See the detailed description.

reviewsFilterStringstringoptionaldefault: ""

If you enter keywords, only reviews containing those keywords will be scraped. Leave it blank to scrape all reviews.

scrapePlaceDetailPagebooleanoptionaldefault: false

Scrape detail pages of each place the Actor finds. This will slow down the Actor since it needs to open another page for each place individually. The fields available only when scrapePlaceDetailPage is enabled include: `reviewsDistribution`, `imageCategories`, popularTimes fields, `openingHours`, `BusinessConfirmationText`, `peopleAlsoSearch`, `reviewsTags`, `updatesFromCustomers`, `questionsAndAnswers`, `tableReservationLinks`, `orderBy`, `ownerUpdates` and hotel fields. Enabling this also ensures that `reviewsCount` will be scraped. This option needs to be enabled if you wish to use any of the options below.

allPlacesNoSearchActionstringoptionaldefault: ""

Extract all places visible on the map. Use the Override zoom level parameter to select the level of detail. Higher zoom will scrape more places but will take longer to finish. You can test what place pins are visible with a specific zoom by changing the 16z part of the Google Maps URL.

maxCrawledPlacesPerSearchintegeroptionaldefault: 25

Number of results you expect to get per each Search term, Category or URL. The higher the number, the longer it will take. If you want to scrape all the places available, leave this field empty or use this section 🧭 Scrape all places on the map*.

scrapeReviewsPersonalDatabooleanoptionaldefault: true

This setting allows you to get personal data about the reviewer (their ID, name, URL, and photo URL) and about review (URL). Note: review ID (reviewId) is always included regardless of this setting. ⚠️ Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

scrapeSocialMediaProfilesobjectoptionaldefault: {"tiktoks":false,"twitters":false,"youtubes":false,"facebooks":false,"instagrams":false}

Enable enrichment for any social media profiles found. This add-on retrieves detailed public data for each profile, including profile names, follower/following counts, descriptions, post/video counts, and verification status. Pricing depends on your subscription plan (please see the 'Pricing' tab for details). You are charged a flat rate for the total number of profiles enriched, regardless of how many platforms (Facebook, YouTube, etc.) you select.Feature Dependency: To use this feature, the '⏩ Add-on: Company contacts enrichment (from website)' option will be automatically enabled. This ensures that all enriched social media data is correctly combined with the main contact record for each domain. Output: Enriched profiles are available in the Social profiles output view tab.

leadsEnrichmentDepartmentsarrayoptional

You can use this filter to include only specific departments (like Sales, Marketing, or C-Suite). Note: This will only work if the ⏩ Add-on: Extract business leads information - Maximum leads per place (maximumLeadsEnrichmentRecords) option is enabled. Please note that some job titles are sometimes miscategorized in the wrong departments.

verifyLeadsEnrichmentEmailsbooleanoptionaldefault: false

When enabled, verifies the email address of each lead extracted during business leads enrichment. Each lead receives an emailVerification object with the verification result and quality assessment. Requires business leads enrichment to be enabled.

maximumLeadsEnrichmentRecordsintegeroptionaldefault: 0

Enrich your results with detailed contact and company information, including employee names, job titles, emails, phone numbers, LinkedIn profiles, and key company data like industry and number of employees. This setting allows you to set the maximum number of leads records you want to scrape per each place found on the map (that has a website). By default, it's set to 0 which means that no leads information will be scraped. ⚠️ Note that some of the fields contain personal data. GDPR protects personal data in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your use case is legitimate, please consult an attorney. We exclude leads of big chains as these are not related to the local places: mcdonalds, starbucks, dominos, pizzahut, burgerking, kfc, subway, wendys, dunkindonuts, tacobell. ⚠️ Cost warning: This is a multiplier. Requesting 10 leads for 1,000 places will attempt to find 10,000 total leads. You are only charged for leads successfully found.

scrapeTableReservationProviderbooleanoptionaldefault: false

Scrape table reservation provider data like name, address, email or phone. This data is present only in restaurants that have blue "RESERVE A TABLE" button

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Find coffee shops near a location on Google Maps"
  }
}'

CLI Usage

askfaro describe site-scrapers/google-maps-scraper

Install pip install askfaro-cli, then askfaro auth login.

instagram-profile-scraper

Instagram Profile Scraper.

Usage-based · 3.25 credits per profile

Example prompts

  • Get an Instagram profile's bio, followers, and post count
  • Scrape profile details for an Instagram account

Parameters

usernamesarrayrequired

Provide one or several Instagram user names you want to scrape the posts from. The actor will also handle user name IDs.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

includeAboutSectionbooleanoptionaldefault: false

This feature is for paying users only. If enabled, the scraper will extract information about the account, including date joined, country of origin, and the profile's channel information. Please beware that the country is there ONLY if the user filled in this information.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get an Instagram profile's bio, followers, and post count"
  }
}'

CLI Usage

askfaro describe site-scrapers/instagram-profile-scraper

Install pip install askfaro-cli, then askfaro auth login.

facebook-pages-scraper

Facebook Pages Scraper.

Usage-based · 15 credits per page

Example prompts

  • Get details and info for a Facebook page
  • Scrape a Facebook page's about, likes, and contact info

Parameters

startUrlsarrayrequireddefault: []

Provide urls of Facebook pages you want to get information from. Only works on facebook pages, not personal profiles (not even public ones).

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get details and info for a Facebook page"
  }
}'

CLI Usage

askfaro describe site-scrapers/facebook-pages-scraper

Install pip install askfaro-cli, then askfaro auth login.

realtor-scraper

Realtor.com Scraper (search and detail pages).

Usage-based · 6.25 credits per result

Example prompts

  • Find homes for sale on Realtor.com in Denver
  • Scrape property listings and details from Realtor.com

Parameters

proxyobjectoptionaldefault: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"US"}

Specifies proxy servers that will be used by the scraper in order to hide its origin. For details, see Proxy configuration in README.

bedsMinintegeroptional

Minimum number of bedrooms. Leave empty for any.

keywordstringoptional

Free-text keyword that must appear in the listing description (e.g. 'roof', 'pool', 'new roof'). Leave empty to skip keyword filtering.

bathsMinintegeroptional

Minimum number of bathrooms. Leave empty for any.

maxItemsintegeroptionaldefault: 20

Maximum number of listings/items/agents to scrape per crawl. Lower this for quick test runs; raise it (or leave the default) for full scrapes.

priceMaxintegeroptional

Maximum list price (or sold price when mode is 'Sold'). Leave empty for no maximum.

priceMinintegeroptional

Minimum list price (or sold price when mode is 'Sold'). Leave empty for no minimum.

startUrlsarrayoptional

URLs to start with. Use a real Realtor.com search URL to mirror exactly what you see in the browser. Clear this list and use the 'Scrape with search filters' section below if you prefer a guided form.

searchModestringoptionaldefault: "for_sale"

Top-level search mode. Choose 'For sale / Off market' to use the Statuses filter below, or 'Sold' for recently sold listings (last 6 months window).

agentZipCodesarrayoptional

List of ZIP codes to search for agents (e.g. 32963, 90210). Each becomes a /realestateagents/{zip} URL. Leave empty when scraping listings.

propertyTypesarrayoptionaldefault: []

Filter by one or more property types. Leave empty for all types.

maxConcurrencyintegeroptionaldefault: 5

Maximum number of pages that can be processed at the same time. Lower values (3-5) help prevent memory issues.

minConcurrencyintegeroptionaldefault: 1

Minimum number of pages that will be processed at the same time.

monitoringModebooleanoptionaldefault: false

If checked, the scraper will only return listings that were not seen in previous runs (useful for daily/weekly delta runs).

searchStatusesarrayoptionaldefault: ["for_sale","ready_to_build"]

Which listing statuses to include. Defaults to active 'For Sale' + 'Ready to Build'. Add 'Pending' or 'Coming Soon' to get the listings the client cares about. Ignored in 'Sold' mode.

additionalStatsbooleanoptionaldefault: false

If enabled, the scraper will fetch additional property stats (price history, neighborhood stats) for each listing. Adds extra requests, so it slows the run down.

searchLocationsarrayoptional

City, ZIP code, neighborhood or state to search. Examples: 'Las Vegas, NV', 'Corinth_TX', '90026', 'Brooklyn, NY'. Add as many as you need.

maxRequestRetriesintegeroptionaldefault: 5

Number of times the crawler will retry a failed request before giving up.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

fetchAgentListingsbooleanoptionaldefault: false

If enabled, the scraper will fetch active listings for each agent. Only relevant when scraping agents.

includePermitHistorybooleanoptionaldefault: false

If enabled, the scraper will fetch the public-records 'Permit history' table for each property (date, type of work, project type, project name, status). A derived has_roof_permit flag is also added so you can spot roofing permits at a glance. Adds one extra request per property and is billed via the separate permit-history event, charged per permit row returned (e.g. a property with 3 permits = 3 charges; a property with no permits = 0 charges).

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Find homes for sale on Realtor.com in Denver"
  }
}'

CLI Usage

askfaro describe site-scrapers/realtor-scraper

Install pip install askfaro-cli, then askfaro auth login.

instagram-comment-scraper

Instagram Comments Scraper.

Usage-based · 3.25 credits per comment

Example prompts

  • Scrape comments from an Instagram post
  • Get comments and likes on an Instagram post

Parameters

directUrlsarrayrequired

Add one or multiple URLs to scrape comments from - posts or reels. You can add URLs one by one or upload a list using the Bulk edit option.

resultsLimitintegeroptionaldefault: 15

Set the number of comments you expect to scrape from each post or reel. If set to 5, you will get 5 comments per URL. If you add 2 URLs, you will extract 10 results altogether. ❗️ If you choose to scrape replies as well, the total number will be greater than you set for comments.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

includeNestedCommentsbooleanoptional

This feature is for paying users only. If checked, the scraper will extract replies for each comment. ⚠️ Note that each reply/comment will be displayed as a separate result, so you'll get more results in total than you set in `resultsLimit` section above.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape comments from an Instagram post"
  }
}'

CLI Usage

askfaro describe site-scrapers/instagram-comment-scraper

Install pip install askfaro-cli, then askfaro auth login.

threads-profile-scraper

Meta Threads Profile Scraper.

Usage-based · 6.25 credits per profile

Example prompts

  • Get a Threads profile's posts and follower count
  • Scrape posts from a Meta Threads account

Parameters

usernamesarrayrequired

Provide one or several Threads.Net user names you want to scrape.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get a Threads profile's posts and follower count"
  }
}'

CLI Usage

askfaro describe site-scrapers/threads-profile-scraper

Install pip install askfaro-cli, then askfaro auth login.

twitter-scraper

X / Twitter Tweet Scraper.

Usage-based · 50 credits per tweet

Example prompts

  • Scrape recent tweets for a hashtag or keyword
  • Get tweets and engagement stats from an X profile

Parameters

endstringoptional

Returns tweets sent before the given date.

sortstringoptional

Sorts search results. If you are getting low results, try Top instead of Latest. Latest + Top runs both simultaneously to maximize results but may return some duplicate tweets.

startstringoptional

Returns tweets sent after the given date.

authorstringoptional

Returns tweets sent by the given user. It should be a Twitter (X) Handle.

geocodestringoptional

Returns tweets sent by users located within a given radius of the given latitude/longitude.

maxItemsintegeroptionaldefault: 2

Maximum number of items that you want as output.

inReplyTostringoptional

Returns tweets that are replies to the given user. It should be a Twitter (X) Handle.

onlyImagebooleanoptional

If selected, only returns tweets that contain images.

onlyQuotebooleanoptional

If selected, only returns tweets that are quotes.

onlyVideobooleanoptional

If selected, only returns tweets that contain videos.

startUrlsarrayoptional

Twitter (X) URLs. Paste the URLs and get the results immediately. Tweet, Profile, Search or List URLs are supported.

mentioningstringoptional

Returns tweets mentioning the given user. It should be a Twitter (X) Handle.

searchTermsarrayoptional

Search terms you want to search from Twitter (X). You can refer to https://github.com/igorbrigadir/twitter-advanced-search.

withinRadiusstringoptional

Returns tweets sent within the given radius of the given location.

geotaggedNearstringoptional

Returns tweets sent near the given location.

placeObjectIdstringoptional

Returns tweets tagged with the given place.

tweetLanguagestringoptional

Restricts tweets to the given language, given by an ISO 639-1 code.

minimumRepliesintegeroptional

Returns tweets with at least the given number of replies.

twitterHandlesarrayoptional

Twitter handles that you want to search on Twitter (X)

conversationIdsarrayoptional

Conversation IDs that you want to search on Twitter (X)

minimumRetweetsintegeroptional

Returns tweets with at least the given number of retweets.

onlyTwitterBluebooleanoptional

If selected, only returns tweets by users who are Twitter Blue subscribers.

minimumFavoritesintegeroptional

Returns tweets with at least the given number of favorites.

customMapFunctionstringoptional

Function that takes each of the objects as argument and returns data that will be mapped by the function itself. This function is not intended for filtering, please don't use it for filtering purposes or you will get banned automatically.

onlyVerifiedUsersbooleanoptional

If selected, only returns tweets by users who are verified.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

includeSearchTermsbooleanoptional

If selected, a field will be added to each tweets about the search term that was used to find it.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Scrape recent tweets for a hashtag or keyword"
  }
}'

CLI Usage

askfaro describe site-scrapers/twitter-scraper

Install pip install askfaro-cli, then askfaro auth login.

linkedin-profile-scraper

LinkedIn Profile Scraper (with email).

Usage-based · 12.5 credits per profile

Example prompts

  • Get profile details for a person on LinkedIn
  • Scrape job title, experience, and work email from a LinkedIn profile

Parameters

urlsarrayoptional

List of LinkedIn profile URLs to scrape. Provide at least one of the 3 fields: URLs or Public Identifiers or Profile IDs

queriesarrayoptional

List of LinkedIn profile URLs or Public Identifiers (last part in the URL) to scrape.

profileIdsarrayoptional

List of LinkedIn profile IDs to scrape. Provide at least one of the 3 fields: URLs or Public Identifiers or Profile IDs

publicIdentifiersarrayoptional

List of LinkedIn Public Identifiers. Provide at least one of the 3 fields: URLs or Public Identifiers or Profile IDs

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

profileScraperModestringoptional

Choose the mode for scraping LinkedIn profiles. 'Profile details' scrapes detailed profile information, while 'Profile details + email search' attempts to find the email address of the profile owner.

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Get profile details for a person on LinkedIn"
  }
}'

CLI Usage

askfaro describe site-scrapers/linkedin-profile-scraper

Install pip install askfaro-cli, then askfaro auth login.

tiktok-trends-hashtags

Trending TikTok hashtags by country, time range, and Top-100 newness.

Usage-based · 4.625 credits per result

Example prompts

  • What are the trending TikTok hashtags in the US right now?
  • Get the top trending hashtags on TikTok by country

Parameters

adsRankTypestringoptionaldefault: "popular"
adsFollowersstringoptional
adsTimeRangestringoptionaldefault: "7"

Ignored for trending creators

adsNewOnBoardbooleanoptional
adsCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending hashtags

resultsPerPageintegeroptionaldefault: 10

Maximum number of results we can scrape is approximately 100 for hashtags and sounds, and 500 for creators and videos.

adsSortVideosBystringoptionaldefault: "vv"
adsSortCreatorsBystringoptionaldefault: "follower"
adsAudienceCountrystringoptional

For some regions TikTok might not provide any data, refer to https://ads.tiktok.com/business/creativecenter/inspiration/popular/creator/pc/en to see which regions are supported.

adsHashtagIndustrystringoptional

Filter trending hashtags by a specific industry. Applies if scraping hashtags from Ads Creative Center.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

adsSoundsCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending songs

adsVideosCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending videos

adsCreatorsCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending creators

adsApprovedForBusinessUsebooleanoptional

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "What are the trending TikTok hashtags in the US right now?"
  }
}'

CLI Usage

askfaro describe site-scrapers/tiktok-trends-hashtags

Install pip install askfaro-cli, then askfaro auth login.

tiktok-trends-sounds

Trending TikTok sounds/songs by country and leaderboard type (popular vs breakout).

Usage-based · 4.625 credits per result

Example prompts

  • What songs are trending on TikTok this week?
  • Get breakout TikTok sounds by country

Parameters

adsRankTypestringoptionaldefault: "popular"
adsFollowersstringoptional
adsTimeRangestringoptionaldefault: "7"

Ignored for trending creators

adsNewOnBoardbooleanoptional
adsCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending hashtags

resultsPerPageintegeroptionaldefault: 10

Maximum number of results we can scrape is approximately 100 for hashtags and sounds, and 500 for creators and videos.

adsSortVideosBystringoptionaldefault: "vv"
adsSortCreatorsBystringoptionaldefault: "follower"
adsAudienceCountrystringoptional

For some regions TikTok might not provide any data, refer to https://ads.tiktok.com/business/creativecenter/inspiration/popular/creator/pc/en to see which regions are supported.

adsHashtagIndustrystringoptional

Filter trending hashtags by a specific industry. Applies if scraping hashtags from Ads Creative Center.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

adsSoundsCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending songs

adsVideosCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending videos

adsCreatorsCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending creators

adsApprovedForBusinessUsebooleanoptional

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "What songs are trending on TikTok this week?"
  }
}'

CLI Usage

askfaro describe site-scrapers/tiktok-trends-sounds

Install pip install askfaro-cli, then askfaro auth login.

tiktok-trends-videos

Trending TikTok videos by country and time range.

Usage-based · 4.625 credits per result

Example prompts

  • Show me trending TikTok videos in the UK
  • Get the most popular TikTok videos by country and time range

Parameters

adsRankTypestringoptionaldefault: "popular"
adsFollowersstringoptional
adsTimeRangestringoptionaldefault: "7"

Ignored for trending creators

adsNewOnBoardbooleanoptional
adsCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending hashtags

resultsPerPageintegeroptionaldefault: 10

Maximum number of results we can scrape is approximately 100 for hashtags and sounds, and 500 for creators and videos.

adsSortVideosBystringoptionaldefault: "vv"
adsSortCreatorsBystringoptionaldefault: "follower"
adsAudienceCountrystringoptional

For some regions TikTok might not provide any data, refer to https://ads.tiktok.com/business/creativecenter/inspiration/popular/creator/pc/en to see which regions are supported.

adsHashtagIndustrystringoptional

Filter trending hashtags by a specific industry. Applies if scraping hashtags from Ads Creative Center.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

adsSoundsCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending songs

adsVideosCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending videos

adsCreatorsCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending creators

adsApprovedForBusinessUsebooleanoptional

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Show me trending TikTok videos in the UK"
  }
}'

CLI Usage

askfaro describe site-scrapers/tiktok-trends-videos

Install pip install askfaro-cli, then askfaro auth login.

tiktok-trends-creators

Trending TikTok creators by country, follower bucket, and industry.

Usage-based · 4.625 credits per result

Example prompts

  • Find trending TikTok creators in the beauty space
  • Get top TikTok creators by country and follower size

Parameters

adsRankTypestringoptionaldefault: "popular"
adsFollowersstringoptional
adsTimeRangestringoptionaldefault: "7"

Ignored for trending creators

adsNewOnBoardbooleanoptional
adsCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending hashtags

resultsPerPageintegeroptionaldefault: 10

Maximum number of results we can scrape is approximately 100 for hashtags and sounds, and 500 for creators and videos.

adsSortVideosBystringoptionaldefault: "vv"
adsSortCreatorsBystringoptionaldefault: "follower"
adsAudienceCountrystringoptional

For some regions TikTok might not provide any data, refer to https://ads.tiktok.com/business/creativecenter/inspiration/popular/creator/pc/en to see which regions are supported.

adsHashtagIndustrystringoptional

Filter trending hashtags by a specific industry. Applies if scraping hashtags from Ads Creative Center.

continuation_tokenstringoptional

Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.

adsSoundsCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending songs

adsVideosCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending videos

adsCreatorsCountryCodestringoptionaldefault: "US"

Pick the country for which you want to scrape trending creators

adsApprovedForBusinessUsebooleanoptional

API Usage

curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
  -H "Authorization: Bearer faro_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
  "intent": {
    "prompt": "Find trending TikTok creators in the beauty space"
  }
}'

CLI Usage

askfaro describe site-scrapers/tiktok-trends-creators

Install pip install askfaro-cli, then askfaro auth login.