API reference
Every parameter, response field and request for all 15 APIs, with examples in cURL, Node.js, Python, PHP and Go.
- Host
- https://api.apify.com/v2
- Auth
- Bearer $APIFY_TOKEN
- Format
- JSON Dataset items
Quickstart
Send a POST request to an Actor endpoint, then read the JSON Dataset items it returns. The same Apify token and API input are used by every language example.
- 1
Choose an API
Open an endpoint below and review its request fields, response fields and full published URL.
- 2
Use your own Apify token
Keep
APIFY_TOKENon a trusted server. MEKA does not issue or store a separate key for these endpoints. - 3
POST JSON and read the Dataset
A successful synchronous response is a JSON Dataset array. Item fields vary by Actor, so use the response fields published for that product.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~similarweb-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"domains":["1password.com"],"maxDomains":1000,"maxConcurrency":2}'Recorded item
Sep 27, 2026
{
"domain": "1password.com",
"globalRank": 5485,
"countryRank": {
"Country": 840,
"CountryCode": "US",
"Rank": 2209
},
"visits": "9647437",
"bounceRate": "0.4371691206286031",
"pagesPerVisit": "4.619642728165759",
"timeOnSite": "157.70285663348605",
"estimatedMonthlyVisits": {
"2026-06-01": 8895293,
"2026-07-01": 9471977,
"2026-08-01": 9647437
},
"trafficSources": {
"SocialOrganic": 0.01672362496371915,
"SocialPaid": 0.0008991509642177346,
"Mail": 0.020818899838820768,
"Referrals": 0.14434892620133308,
"SearchOrganic": 0.13888276159712318,
"SearchPaid": 0.04399461192761805,
"Direct": 0.612661880057132,
"GenAi": 0.006080149948391083,
"Affiliate": 0.009997576149865704,
"DisplayAds": 0.0055924183517794684
},
"topCountryShares": [
{
"Country": 840,
"CountryCode": "US",
"Value": 0.51678943466488
},
{
"Country": 826,
"CountryCode": "GB",
"Value": 0.053649297119113516
}
],
"topKeywords": [
{
"name": "1password",
"esitmatedValue": 500760,
"cpc": 1.81
}
],
"snapshotDate": "2026-08-01T00:00:00+00:00",
"inputDomain": "1password.com",
"normalizedDomain": "1password.com",
"dataAvailable": true,
"keywordVolumes": [
{
"name": "1password",
"volume": 610340
}
],
"aiTraffic": {
"available": true,
"totalVisits": 39080.124,
"share": 0.004050829643697701,
"distributionBoundary": "<100K",
"sources": [
{
"source": "chatgpt.com",
"rank": 1,
"share": 0.9351798116096048,
"monthlyHistory": [
{
"date": "2026-08-01",
"share": 0.9351798116096048
},
{
"date": "2026-07-01",
"share": 0.6751080421341549
},
{
"date": "2026-06-01",
"share": 0.7754986652550027
}
]
}
],
"prompts": []
}
}Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
Authentication
MEKA does not issue a separate API key for these endpoints. Requests authenticate with an Apify account token.
- Send the token in the
Authorizationheader as a Bearer token. - Set
Content-Type: application/jsonfor every POST body. - Create and manage tokens in the Apify Console. Never place a real token in browser code or a public repository.
Request headers
Authorization: Bearer $APIFY_TOKEN
Content-Type: application/jsonBilling
Each API is billed from the events published for its Apify Actor, not from one site-wide request price.
Review the Actor event definitions before running a batch. LinkedIn Jobs includes a startup fee in addition to its published events. Whether a failed or empty result is charged depends on the event definition for that Actor.
See pricingBilling events
- Unit
- Published Apify Actor event
- Startup fee
- Included where published; LinkedIn Jobs has one
- Failed or empty
- Follows the Actor event definition
- Rates
- Per product and event, not uniform credits
Responses
A successful synchronous call returns JSON Dataset items. MEKA does not wrap that data in a separate envelope or normalize every record into one shared shape.
- Names, nesting and value types follow the selected Actor. Review that product's response fields.
- Null, missing or partial values follow the Actor contract and are not rewritten into a universal schema.
- Recorded examples are historical snapshots. They are not live data and do not prove what a new run will return.
Synchronous requests time out with HTTP 408 after 300 seconds. For longer work, start an asynchronous Apify Run and read its Dataset when the run completes. Official synchronous endpoint reference
Response behavior
HTTP 200
Content-Type: application/json
Body: JSON Dataset array (items vary by Actor)
HTTP 408
Synchronous wait exceeded 300 secondsTikTok Comments Scraper
Market researchPublic video comments, replies, and profile video discovery.
https://api.apify.com/v2/acts/meka.im~tiktok-comments-scraper/run-sync-get-dataset-itemsParameters
12 fieldspostURLsarrayUp to 100 full public TikTok video URLs. Use Profile usernames below for profiles; invalid video URLs are skipped independently. Default: [].
commentsPerPostintegerMaximum total delivered comments and replies for each video. Default: 100. Range: 1–10000.
topLevelCommentsPerPostintegerMaximum top-level comments collected for each video. Default: 100. Range: 1–10000.
maxRepliesPerCommentintegerPer-parent reply upper bound, default 0. Delivers main comments first; explicitly set this to collect replies. Default: 0. Range: 0–500.
profilesarrayUp to 100 usernames, optional @. Videos and public reposts supported. Default: [].
resultsPerPageintegerDefault 1. Upper bound on discovered posts per profile, not comment rows. Default: 1. Range: 1–100.
profileSortingstringDefault latest. Native video discovery order: latest, popular or oldest. Reposts retain upstream repost order. Default: "latest".
profileScrapeSectionsarrayDefault [videos]. Select videos, reposts or both. Each section uses native upstream pagination; profileSorting applies to videos. resultsPerPage caps unique posts across selected sections. Default: ["videos"].
oldestPostDateUnifiedstringInclusive UTC publication lower bound: valid YYYY-MM-DD or integer string 1..36500 (1=today, 2=yesterday). Relative days freeze at each profile unit first request, before discovery.
newestPostDatestringYYYY-MM-DD UTC video publication date; inclusive calendar day. Applies to profile discovery before comment collection.
excludePinnedPostsbooleanDefault false. Profile discovery only. Default: false.
maxConcurrencyintegerProcess 1–16 video or profile targets at once. Each profile processes its videos sequentially. Output can arrive in completion order; this is not a requests-per-second setting. Default: 16. Range: 1–16.
Response
18 fieldscidstringVerified comment ID.
textnull | stringPublic comment or reply text; null if unavailable.
createTimenull | integerUnix seconds when supplied.
createTimeISOnull | stringCorresponding ISO UTC creation time.
diggCountnull | integerSource-reported comment likes; null is unknown.
replyCommentTotalnull | integerSource-reported reply count, not a completeness guarantee.
uidnull | stringPublic author ID when available.
uniqueIdnull | stringPublic author username when available.
repliesToIdnull | stringNull for top-level comments; directed reply target when supplied, otherwise parent. Target may be outside the sample.
avatarThumbnailnull | stringPublic author image URL reference; may expire.
likedByAuthornull | booleanVerified source flag when supplied.
pinnedByAuthornull | booleanVerified source pin flag, or null when unknown.
mentionsnull | arrayEmpty array for verified absence; otherwise null when handles cannot be verified.
detailedMentionsnull | arrayVerified Tag-contract identities with id; name, nickName and profileUrl remain null. Unknown or unverified metadata stays null.
videoWebUrlstringCanonical full TikTok video URL.
submittedVideoUrlstringActual video URL used for collection, including profile-discovered videos.
inputstringActual video input URL.
_anyfetchobjectProtected contractVersion, inputHash and video-ID:comment-ID recovery identity; no cookies or credentials.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~tiktok-comments-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"postURLs":["https://www.tiktok.com/@nike/video/7693986066830839054"],"commentsPerPost":20,"topLevelCommentsPerPost":10,"maxRepliesPerComment":5,"maxConcurrency":1}'Recorded item
Oct 11, 2026
[
{
"cid": "7694035405498286869",
"createTimeISO": "2026-10-07T21:07:14.000Z",
"diggCount": 5062,
"replyCommentTotal": 2,
"repliesToId": null,
"videoWebUrl": "https://www.tiktok.com/@nike/video/7693986066830839054"
}
]Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
OnlyFans Scraper
Market researchAnonymous public profiles and social links.
https://api.apify.com/v2/acts/meka.im~onlyfans-scraper/run-sync-get-dataset-itemsParameters
2 fieldsprofileUrlsarrayUp to 100 public profile URLs or handles. First occurrences are kept. Invalid entries are skipped. Takes precedence over handle, including when empty.
handlestringCompatibility input used only when profileUrls is absent. Accepts a bare handle or @handle.
Response
23 fieldsidintegerPositive integer profile ID supplied by the public OnlyFans source.
usernamestringPublic profile username.
namestringPublic profile display name.
inputUrlstringCanonical OnlyFans profile URL.
aboutstringPublic biography; may contain source HTML.
isVerifiedbooleanVerification flag from the public source.
feedUserbooleanOptional anonymous source flag; preserves true and false.
locationstring | nullPublic profile location if supplied.
websitenull | stringPublic website if supplied; not independently verified.
postsCountnumberSource-reported public post count.
photosCountnumberSource-reported public photo count.
videosCountnumberSource-reported public video count.
mediasCountnumberSource-reported public media count; no media is downloaded.
subscribersCountnull | numberPublic subscriber count when supplied; null does not mean zero.
subscribePricenumberSource public subscription price; no currency is inferred.
subscriptionBundlesarrayOptional validated source subscription offers.
promotionsarrayOptional validated source promotions.
avatarstring | nullProfile image URL reference; may expire.
headerstring | nullProfile header image URL reference; may expire.
instagramUrlstringOptional available source-provided social URL; not independently verified and never inferred.
xUrlstringOptional available source-provided social URL; not independently verified and never inferred.
tiktokUrlstringOptional available source-provided social URL; not independently verified and never inferred.
youtubeUrlstringOptional available source-provided social URL; not independently verified and never inferred.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~onlyfans-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"profileUrls":["https://onlyfans.com/onlyfans"]}'Recorded item
Oct 11, 2026
[
{
"id": 15585607,
"username": "onlyfans",
"name": "OnlyFans",
"inputUrl": "https://onlyfans.com/onlyfans",
"isVerified": true,
"subscribePrice": 0,
"postsCount": 5099,
"videosCount": 5099
}
]Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
YouTube Channel Scraper
Market researchPublic channel profiles, videos, Shorts, and livestreams.
https://api.apify.com/v2/acts/meka.im~youtube-channel-scraper/run-sync-get-dataset-itemsParameters
13 fieldschannelsarrayPublic YouTube channel handles, IDs or URLs. Empty input succeeds with no results or result charges.
tabsarrayLegacy mode: processed in this order under a shared maxResults cap. Independent limits override tabs when maxResultsShorts or maxResultStreams is supplied. Default: ["videos"].
sortstringUses YouTube native category ordering; unsupported orders are reported as category errors.
maxResultsintegerLegacy mode: shared maximum per channel (1–1000). Independent mode: videos maximum (0–1000), enabled by maxResultsShorts or maxResultStreams. Duplicates across channels are delivered once. Default: 30. Range: 0–1000.
includeDescriptionbooleanAdditional public watch request only for selected items. Failed enrichment retains the basic row and descriptionComplete=false. Default: false.
maxResultsShortsintegerOptional: supplying this activates independent category limits. Unspecified Shorts and Streams limits are zero. Set all three limits to zero for channel-only output. Range: 0–1000.
maxResultStreamsintegerOptional: supplying this activates independent category limits. Unspecified Shorts and Streams limits are zero. Set all three limits to zero for channel-only output. Range: 0–1000.
detailConcurrencyintegerMaximum simultaneous selected-item detail requests. Results retain channel-list order. Default: 8. Range: 1–32.
oldestPostDatestringOptional YYYY-MM-DD (UTC day boundary) or N day / N days (rolling run-start cutoff). Forces latest order. Unknown and boundary-uncertain dates are retained and reported in OUTPUT.dateFilter.
includeChannelInfobooleanFetch channel About once per channel. Profile fields appear in OUTPUT.channels and CHANNELS.json; unavailable fields remain null. Adds up to one upstream request per channel. Default: false.
startUrlsarrayAlternative to channels. Public YouTube channel URLs only; cannot be combined with channels.
sortVideosBystringAlternative to sort; cannot be combined with sort.
outputFormatstringstreamers writes COMPATIBILITY.json using competitor field names plus explicit precision and semantics. Dataset remains v1. Default: "v1".
Response
25 fieldsidstringSource identity; YouTube IDs identify videos.
urlstringCanonical YouTube video or Shorts URL.
titlestringPublic video title.
contentTypestringvideo, short or stream.
channelIdstring | nullAvailable public channel ID.
channelUrlstring | nullAvailable public channel URL.
channelTitlestring | nullAvailable public channel title.
descriptionstring | nullFull public description if requested and available; otherwise null or available listing evidence.
displayedDatestring | nullAvailable source calendar date; not an inferred exact timestamp.
publishedAtstring | nullAlways null; exact timestamps are not inferred from relative labels.
publishedTextstring | nullOriginal relative or public display date label.
dateSourcestring | nullSource evidence for displayed date, or unknown.
viewsTextstring | nullOriginal displayed view count, including abbreviations.
viewsPrecisionstring | nullCount precision evidence; abbreviated_or_unparsed values must not be treated as exact counts.
durationTextstring | nullOriginal displayed duration.
thumbnailstring | nullPublic image URL reference; may expire.
sourceChannelstringSubmitted channel reference associated with this row.
viewsnumber | nullExact count only when supported by source evidence; abbreviations remain null here.
durationSecondsnumber | nullAvailable duration in seconds.
descriptionCompletebooleanTrue only for a complete verified description.
contractVersionintegerNative Dataset contract version: 1.
detailsStatusstring | nullok, unavailable or not_requested; failed optional detail preserves the listing row.
sortRequestedstring | nullRequested ordering.
sortStatusstring | nullconfirmed, requested_unconfirmed or null. Unsupported sorts are reported as category errors.
liveStatusstring | nulllive, upcoming or null; concurrent audience differs from accumulated views.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~youtube-channel-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"channels":["https://www.youtube.com/@NASA"],"tabs":["videos"],"sort":"latest","maxResults":3,"includeChannelInfo":true,"includeDescription":false}'Recorded item
Oct 13, 2026
[
{
"contractVersion": 1,
"id": "ErAqN6gXqZQ",
"url": "https://www.youtube.com/watch?v=ErAqN6gXqZQ",
"title": "NASA's SpaceX Crew-13 Mission (Official NASA Trailer)",
"contentType": "video",
"channelTitle": "NASA",
"description": null,
"descriptionComplete": false,
"publishedText": "12d ago",
"publishedAt": null,
"views": null,
"viewsText": "101K",
"viewsPrecision": "abbreviated_or_unparsed",
"durationSeconds": 62,
"durationText": "1:02",
"detailsStatus": "not_requested",
"sortRequested": "latest",
"sortStatus": "confirmed",
"liveStatus": null
}
]Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
LinkedIn Jobs
Professional dataJob listings, descriptions, and optional company enrichment.
https://api.apify.com/v2/acts/meka.im~linkedin-jobs-scraper/run-sync-get-dataset-itemsParameters
13 fieldskeywordsstringJob title, skills, or free-text search (e.g. "software engineer remote"). Recommended for new searches; ignored when search URLs are provided.
locationstringCity, region, or country as you would type it on LinkedIn (e.g. "United States", "London, United Kingdom", "Remote").
datePostedstringOnly return jobs posted within this window. Default: "anyTime". Accepted: "anyTime", "past24Hours", "pastWeek", "pastMonth".
limitPerSourceintegerMaximum number of jobs to scrape from each input URL (or from the structured filters when no URLs are provided). Defaults to 1000 when omitted. Default: 1000. Minimum: 1.
scrapeCompanybooleanAdd the company website, description, LinkedIn employee count, address, slogan, and logo. Enabled by default and automatically cached for faster repeated runs. Default: true.
geoIdstringOptional LinkedIn geoId for precise location targeting (found in a LinkedIn search URL as `geoId=`). Overrides free-text location when LinkedIn resolves it.
distanceintegerSearch radius in miles around the location. Leave empty for LinkedIn's default. Minimum: 0.
companyIdsstring[]LinkedIn numeric company IDs (from a company URL or `f_C=` in a search URL), e.g. "1441" for Google. Default: [].
under10ApplicantsbooleanOnly jobs with fewer than 10 applicants. Default: false.
urlsstring[]Advanced: paste one or more public LinkedIn Jobs search URLs to preserve an existing workflow. When URLs are provided, their search criteria take priority over the structured filters. Leave this empty for the recommended keyword search. Default: [].
splitByLocationbooleanEnable 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. Default: false.
splitCountrystringSelect the country whose cities will be used to split the search. Required only when 'Split search by city locations' is enabled. Accepted: "US", "CA", "MX", "GB", "DE", "FR", "NL", "CH", "SE", "NO", "DK", "FI", "IE", "ES", "IT", "PT", "BE", "AT", "PL", "CZ", "RO", "HU", "GR", "BG", "HR", "RS", "UA", "SK", "LT", "LV", "EE", "SI", "LU", "MT", "IS", "CY", "TR", "RU", "GE", "AM", "AZ", "BY", "BA", "XK", "MD", "ME", "MK", "AL", "MC", "AD", "LI", "SM", "VA", "IN", "CN", "JP", "KR", "SG", "HK", "TW", "TH", "VN", "ID", "MY", "PH", "BD", "PK", "LK", "NP", "MM", "KH", "KZ", "UZ", "KG", "TJ", "TM", "MN", "BN", "MV", "BT", "LA", "TL", "AF", "KP", "AE", "SA", "IL", "QA", "KW", "BH", "OM", "JO", "LB", "IQ", "IR", "PS", "SY", "YE", "AU", "NZ", "FJ", "PG", "WS", "TO", "VU", "SB", "KI", "MH", "FM", "PW", "NR", "TV", "BR", "AR", "CO", "CL", "PE", "EC", "UY", "VE", "BO", "PY", "GY", "SR", "CR", "PA", "GT", "DO", "PR", "JM", "TT", "HN", "SV", "NI", "BS", "BB", "CU", "HT", "BZ", "AG", "DM", "GD", "LC", "KN", "VC", "ZA", "NG", "KE", "EG", "MA", "GH", "ET", "TZ", "RW", "UG", "SN", "TN", "CI", "CM", "DZ", "AO", "MU", "ZM", "ZW", "MZ", "CD", "BW", "NA", "MG", "LY", "SD", "SS", "SO", "ML", "GA", "BJ", "BF", "MW", "NE", "TD", "SL", "LR", "ER", "GM", "GN", "GW", "TG", "MR", "SZ", "LS", "DJ", "CG", "CF", "BI", "CV", "KM", "GQ", "ST", "SC".
autoConvertToAiSearchbooleanPreserve filters from older LinkedIn search URLs with LinkedIn's current AI search. Experience level, job type, and workplace filters are converted into search terms. Supported URL filters remain unchanged. Other ID-only filters may not be interpreted by LinkedIn; describe them in Keywords instead. Default: true.
Response
30 fieldsidstringRequiredLinkedIn job identifier.
"4391073032"linkstringRequiredPublic LinkedIn job URL.
"https://www.linkedin.com/jobs/view/4391073032"titlestringRequiredJob title.
"Senior Software Engineer"companyNamestringRequiredHiring company name.
"Example Company"companyLinkedinUrlstring | nullPublic LinkedIn company URL when available.
companyLogostring | nullPublic company logo URL when available.
locationstringRequiredLocation shown on the job posting.
"London, United Kingdom"salarystringRequiredPublished salary text when available.
postedAtstring | nullPublished posting date when available.
"2026-09-12"benefitsstring[]RequiredPublished benefits when available.
descriptionHtmlstring | nullRequiredFull job description with HTML formatting when available.
applicantsCountstring | nullApplicant count text when publicly available.
applyUrlstringRequiredPublic application URL when available.
descriptionTextstring | nullRequiredFull plain-text job description when available.
jobPosterNamestringPublicly listed job poster name.
jobPosterTitlestringPublicly listed job poster title.
jobPosterPhotostringPublic job poster photo URL.
jobPosterProfileUrlstringPublic job poster profile URL.
seniorityLevelstring | nullSeniority level shown on the job posting when available.
employmentTypestring | nullEmployment type shown on the job posting when available.
jobFunctionstring | nullJob function shown on the job posting when available.
industriesstring | nullIndustries shown on the job posting when available.
companyDescriptionstringPublic company description.
companyWebsitestringPublic company website URL.
companyEmployeesCountintegerLinkedIn employee count when available.
companyAddressobjectStructured public company address when available.
companySloganstringPublic company slogan when available.
inputUrlstringRequiredSearch source that produced the job.
refIdstring | nullLinkedIn search reference identifier when available.
trackingIdstring | nullLinkedIn search tracking identifier when available.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~linkedin-jobs-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"keywords":"software engineer","location":"London, United Kingdom","limitPerSource":100,"scrapeCompany":true}'Recorded item
No recorded response is published for this API. The request contract remains available; the response shape follows the selected Actor.
LinkedIn Company
Professional dataPublic company profiles and firmographic records.
https://api.apify.com/v2/acts/meka.im~linkedin-company-scraper/run-sync-get-dataset-itemsParameters
4 fieldscompanyUrlsstring[]LinkedIn company URLs or slugs. Valid company and Showcase pages are supported. Default: [].
["https://www.linkedin.com/company/openai/"]companyNamesstring[]Optional best-effort exact-name resolution. For reliable bulk delivery, use LinkedIn company URLs or slugs. Default: [].
[]maxCompaniesintegerMaximum number of unique input companies to process. Invalid or unresolved inputs may reduce the number of delivered records. Default: 100. Minimum: 1. Maximum: 1000.
100maxConcurrencyintegerMaximum number of company batches and name resolutions processed in parallel. Default: 3. Minimum: 1. Maximum: 10.
3
Response
22 fieldsnamestringRequiredCompany name
linkedinUrlstringRequiredCanonical LinkedIn company URL
websitestring | nullCompany website, when publicly exposed.
descriptionstring | nullPublic company description.
industrystring | nullPrimary public industry label.
companyTypestring | nullPublic company type.
companySizestring | nullPublic employee range label.
employeeCountinteger | nullEmployees shown on LinkedIn, when available.
followerCountinteger | nullPublic LinkedIn follower count, when available.
foundedYearinteger | nullYear the company was founded, when available.
headquartersstring | nullPublic headquarters display text.
streetstring | nullStreet address, when available.
citystring | nullCity, when available.
statestring | nullState or region, when available.
countrystring | nullCountry, when available.
postalCodestring | nullPostal code, when available.
specialtiesstring[]RequiredPublic company specialties.
logoUrlstring | nullPublic company logo URL, when available.
inputCompanyNamestring | nullOriginal company name input, when name resolution was used.
resolutionConfidencestring | nullName resolution confidence; currently high for exact matches.
resolutionSourcestring | nullSource used to resolve a company name.
scrapedAtstringRequiredUTC scrape timestamp.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~linkedin-company-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"companyUrls":["https://www.linkedin.com/company/openai/","microsoft"],"maxCompanies":100,"maxConcurrency":3}'Recorded item
Sep 24, 2026
[
{
"name": "Stripe",
"industry": "Technology, Information and Internet",
"headquarters": "South San Francisco, California",
"description": "Stripe builds programmable financial services. Millions of companies—from the world’s largest enterprises to the most ambitious startups—use Stripe to accept payments, grow their revenue, and accelerate new business opportunities. Headquartered in San Francisco and Dublin, the company aims to increase the GDP of the internet.",
"website": "https://stripe.com",
"url": "https://www.linkedin.com/company/stripe",
"followers": 1727001,
"employeesOnLinkedIn": 16597,
"size": "5,001-10,000 employees"
}
]Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
LinkedIn Public Posts
Professional dataPublic post text, author details, and engagement.
https://api.apify.com/v2/acts/meka.im~linkedin-public-post-scraper/run-sync-get-dataset-itemsParameters
1 fieldspostUrlsstring[]RequiredOne to 1,000 public LinkedIn post URLs or numeric activity IDs. Duplicate identities are fetched once and reported explicitly at their later input positions.
Response
17 fieldsokbooleanRequiredTrue only for a successfully fetched public post.
inputstringRequiredOriginal input value.
postIdstring | nullLinkedIn activity ID.
postUrlstring | nullCanonical public post URL.
textstring | nullPost text exposed publicly.
postTypestring | nullObserved public post type.
publishedAtstring | nullExact JSON-LD publication time when exposed.
authorobject | nullPublic author information.
mediaobject[]Public images, video, or document resources.
articleobject | nullPublic external article card.
jobobject | nullPublic attached job card.
repostobject | nullPublic original-post details fetched from its own page.
engagementobject | nullOnly public total reactions and comments.
sourceobjectRequiredLive public-source declaration.
fetchedAtstringRequiredTime of the live fetch.
limitationsstring[]Unavailable public-data capabilities.
errorobject | nullExplicit non-billable invalid, restricted, or duplicate result.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~linkedin-public-post-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"postUrls":["https://www.linkedin.com/posts/google_7-ways-google-workspace-can-help-this-school-activity-7506056712026529793-gctk"]}'Recorded item
Sep 24, 2026
[
{
"postId": "6603817662688702465",
"postUrl": "https://www.linkedin.com/posts/jimscharf_new-for-identity-federation-use-employee-activity-6603817662688702465-YTu-",
"text": "Pass in employee attributes that you might have in your on-prem identity store, and leverage those as part of access control decisions within #AWS\nhttps://lnkd.in/gus7uSz #ABAC @AWSIdentity",
"postType": "article",
"publishedAt": "2019-11-23T01:33:43.710Z",
"authorName": "Jim Scharf",
"authorUrl": "https://www.linkedin.com/in/jimscharf",
"totalReactions": 77,
"comments": 1
}
]Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
LinkedIn Profile Finder
Professional dataProfile candidates for research and manual review.
https://api.apify.com/v2/acts/meka.im~linkedin-profile-candidate-finder/run-sync-get-dataset-itemsParameters
5 fieldspeopleobject[]RequiredOne record per known person. A full name is required; company, domain, title, location, and keywords improve ranking.
[{"fullName":"Satya Nadella","company":"Microsoft","domain":"microsoft.com","title":"CEO","location":"Redmond"}]maxCandidatesintegerMaximum ranked LinkedIn profile candidates returned for each successful input. Default: 5. Minimum: 1. Maximum: 10.
5includeEvidencebooleanInclude Google result titles, snippets, and match reasons with each candidate. Default: true.
minScoreintegerHigher thresholds return fewer candidates. A score is ranking evidence, not an identity-verification guarantee. Default: 40. Minimum: 0. Maximum: 100.
40maxConcurrencyintegerMaximum people processed concurrently. The conservative default is validated for the Google-only route. Default: 5. Minimum: 1. Maximum: 10.
5
Response
19 fieldsfullNamestringRequiredInput person's full name.
companystring | nullOptional input company.
domainstring | nullOptional input company domain.
titlestring | nullOptional input role or title.
locationstring | nullOptional input location.
keywordsstring | nullOptional input keywords.
statusstringRequiredCandidate, no reliable indexed result, or execution/input error. Accepted: "candidate_found", "not_found", "error".
bestCandidateUrlstring | nullRequiredTop canonical linkedin.com/in candidate, or null.
bestCandidateTitlestring | nullGoogle-indexed title for the top candidate.
bestCandidateSnippetstring | nullGoogle-indexed snippet for the top candidate.
scoreintegerRequiredDeterministic ranking score from public input and Google evidence.
confidencestringRequiredRanking band, never an identity guarantee. Accepted: "high", "medium", "low", "none".
matchReasonsstring[]RequiredPublic clues that contributed to the ranking score.
requiresReviewbooleanRequiredAlways true because candidate identity must be reviewed.
sourcestringRequiredPublic Google-indexed web results. Accepted: "google_public_index".
queryCountintegerRequiredGoogle-only query variants actually executed.
candidatesobject[]RequiredRanked, deduplicated canonical LinkedIn profile candidates.
errorCodestring | nullMachine-readable error code. Accepted: "invalid_input", "search_failed".
errorstring | nullUser-readable error details.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~linkedin-profile-candidate-finder/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"people":[{"fullName":"Satya Nadella","company":"Microsoft","domain":"microsoft.com","title":"CEO","location":"Redmond"}],"maxCandidates":5,"includeEvidence":true,"minScore":40}'Recorded item
Sep 24, 2026
[
{
"title": "Satya Nadella - Chairman and CEO at Microsoft - LinkedIn",
"url": "https://www.linkedin.com/in/satyanadella",
"snippet": "Satya Nadella is an influencer. Chairman and CEO at Microsoft. Microsoft The University of Chicago Booth School of Business. Redmond, ..."
}
]Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
Google Maps Business
Local discoveryBusiness names, addresses, contact details, and source links.
https://api.apify.com/v2/acts/meka.im~google-maps-business-scraper/run-sync-get-dataset-itemsParameters
15 fieldssearchStringsArraystring[]RequiredWhat to look for, one term per line. "dentist in Austin TX" style terms with a place name work best. Each term is searched separately and results keep the order you typed.
locationQuerystringA single place to search in, for example "Austin, TX". Combined with each search term. Leave empty if your terms already name the place.
maxCrawledPlacesPerSearchintegerUp to 20. Google returns one page of 20 per search, and this version does not page further, so higher values are capped at 20. Use more search terms or a tighter location to get more businesses. Default: 20. Minimum: 1. Maximum: 20.
languagestringLanguage of names, categories and opening hours. Default: "en". Accepted: "en", "af", "az", "id", "ms", "bs", "ca", "cs", "da", "de", "et", "es", "es-419", "eu", "fil", "fr", "gl", "hr", "zu", "is", "it", "sw", "lv", "lt", "hu", "nl", "no", "uz", "pl", "pt-BR", "pt-PT", "ro", "sq", "sk", "sl", "fi", "sv", "vi", "tr", "el", "bg", "ky", "kk", "mk", "mn", "ru", "sr", "uk", "ka", "hy", "iw", "ur", "ar", "fa", "am", "ne", "hi", "mr", "bn", "pa", "gu", "ta", "te", "kn", "ml", "si", "th", "lo", "my", "km", "ko", "ja", "zh-CN", "zh-TW".
countryCodestringOnly returns (and charges for) businesses whose address country or time zone confirms they are in this country. Businesses whose country cannot be confirmed are left out. Country detection relies on Google's data and is not guaranteed to be perfect. Leave empty to search without a country filter. Accepted: "", "us", "af", "al", "dz", "as", "ad", "ao", "ai", "aq", "ag", "ar", "am", "aw", "au", "at", "az", "bs", "bh", "bd", "bb", "by", "be", "bz", "bj", "bm", "bt", "bo", "ba", "bw", "bv", "br", "io", "bn", "bg", "bf", "bi", "kh", "cm", "ca", "cv", "ky", "cf", "td", "cl", "cn", "cx", "cc", "co", "km", "cg", "cd", "ck", "cr", "ci", "hr", "cu", "cy", "cz", "dk", "dj", "dm", "do", "ec", "eg", "sv", "gq", "er", "ee", "et", "fk", "fo", "fj", "fi", "fr", "gf", "pf", "tf", "ga", "gm", "ge", "de", "gh", "gi", "gr", "gl", "gd", "gp", "gu", "gt", "gn", "gw", "gy", "ht", "hm", "va", "hn", "hu", "is", "in", "id", "ir", "iq", "ie", "il", "it", "jm", "jp", "jo", "kz", "ke", "ki", "kp", "kr", "kw", "kg", "la", "lv", "lb", "ls", "lr", "ly", "li", "lt", "lu", "mo", "mk", "mg", "mw", "my", "mv", "ml", "mt", "mh", "mq", "mr", "mu", "yt", "mx", "fm", "md", "mc", "mn", "me", "ms", "ma", "mz", "mm", "na", "nr", "np", "nl", "an", "nc", "nz", "ni", "ne", "ng", "nu", "nf", "mp", "no", "om", "pk", "pw", "ps", "pa", "pg", "py", "pe", "ph", "pn", "pl", "pt", "pr", "qa", "re", "ro", "ru", "rw", "sh", "kn", "lc", "pm", "vc", "ws", "sm", "st", "sa", "sn", "rs", "sc", "sl", "sg", "sk", "si", "sb", "so", "za", "gs", "ss", "es", "lk", "sd", "sr", "sj", "sz", "se", "ch", "sy", "tw", "tj", "tz", "th", "tl", "tg", "tk", "to", "tt", "tn", "tr", "tm", "tc", "tv", "ug", "ua", "ae", "gb", "um", "uy", "uz", "vu", "ve", "vn", "vg", "vi", "wf", "eh", "ye", "zm", "zw".
citystringOptional. Added to the location.
statestringOptional. Added to the location.
countystringOptional. Added to the location.
postalCodestringOptional. Added to the location.
customGeolocationobjectA GeoJSON geometry. Its centre is used as the map centre for the search. The outline itself is not applied, so results near the edge are not clipped.
categoryFilterWordsstring[]Case-insensitive match against a business’s categories. Filtered-out businesses are not written and not charged.
searchMatchingstring"all" keeps everything Google returned. "only_includes" keeps names containing the search term. "only_exact" keeps exact name matches. Default: "all". Accepted: "all", "only_includes", "only_exact".
placeMinimumStarsstringDrop businesses rated below this. Businesses with no rating are dropped when a minimum is set. Default: "". Accepted: "", "two", "twoAndHalf", "three", "threeAndHalf", "four", "fourAndHalf".
websitestringKeep only businesses that have a website, or only those without one. Default: "allPlaces". Accepted: "allPlaces", "withWebsite", "withoutWebsite".
disableTelemetrybooleanTurn off the anonymous reliability telemetry described in the README. When this is on, nothing about your run — including your search terms — leaves the run. Default: false.
Response
34 fieldsfidstringGoogle's feature ID, e.g. 0x8644b4eb0b01986f:0x6b241d4769ed491e. The stable key for joining and de-duplication.
placeIdstring | nullGoogle Place ID, e.g. ChIJ…
cidstring | nullCustomer ID, the decimal form used by maps?cid= links.
kgmidstring | nullKnowledge Graph machine ID, e.g. /g/11abc…
businessProfileIdstring | nullGoogle Business Profile ID.
urlstring | nullGoogle Maps link for this business.
titlestring | nullBusiness name.
categoryNamestring | nullPrimary category, the first entry of categories.
categoriesstring[]All categories Google lists, primary first.
descriptionstring | nullEditorial summary. Null when Google has none.
taglinestring | nullShort tagline. Additional field: the reference Actor does not publish this.
addressstring | nullStreet address without the business name, e.g. 1700 S 1st St, Austin, TX 78704.
streetstring | nullstreet
citystring | nullcity
statestring | nullstate
postalCodestring | nullpostalCode
countryCodestring | nullTwo-letter country code.
neighborhoodstring | nullneighborhood
locationobject{ lat, lng }, each null when Google has no coordinates.
phonestring | nullPhone as Google displays it.
phoneUnformattedstring | nullPhone in E.164-like digits.
websitestring | nullwebsite
totalScorenumber | nullAverage rating, 1 to 5.
reviewsCountinteger | nullNumber of reviews. Null when this response variant omitted it.
openingHoursobject[]Weekly hours as { day, hours }, Monday first. Empty when the business publishes none.
openingHoursCompletebooleanTrue when all seven days are present. Google returns a short variant at random; the run retries, but not every business ends up complete.
openStatestring | nullOpen or closed text at the moment of the scrape, e.g. "Closed · Opens 9 AM Sun". NOT a permanent-closure flag.
timezonestring | nullIANA timezone, e.g. America/Chicago.
additionalInfoobjectAccessibility attributes as { group: [{ label: boolean }] }. The search response carries the accessibility group only.
thumbnailstring | nullPreview image URL.
searchStringstring | nullThe search term this row came from.
languagestring | nullLanguage used for the search.
rankinteger | nullPosition within that search term's results, starting at 1.
scrapedAtstringISO timestamp of when this row was produced.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~google-maps-business-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"searchStringsArray":["dentist in Austin"],"maxCrawledPlacesPerSearch":20,"language":"en"}'Recorded item
Sep 24, 2026
[
{
"fid": "0x8644b4eb0b01986f:0x6b241d4769ed491e",
"placeId": "ChIJb5gBC-u0RIYRHkntaUcdJGs",
"cid": "7720327853776914718",
"kgmid": "/g/11cn2mvqwc",
"businessProfileId": "3134221588857878500",
"url": "https://www.google.com/maps?cid=7720327853776914718",
"title": "ATX Family Dental",
"categoryName": "Dentist",
"categories": [
"Dentist",
"Cosmetic dentist",
"Dental clinic",
"Emergency dental service",
"Pediatric dentist",
"Teeth whitening service"
],
"description": null,
"tagline": null,
"address": "1700 S 1st St, Austin, TX 78704",
"street": "1700 S 1st St",
"city": "Austin",
"state": "Texas",
"postalCode": "78704",
"countryCode": "US",
"neighborhood": "Bouldin Creek",
"location": {
"lat": 30.2482229,
"lng": -97.75597049999999
},
"phone": "(512) 717-3147",
"phoneUnformatted": "+15127173147",
"website": "https://www.atxfamilydental.com/",
"totalScore": 4.9,
"reviewsCount": 906,
"openingHours": [
{
"day": "Monday",
"hours": "8 AM–5 PM"
},
{
"day": "Tuesday",
"hours": "8 AM–5 PM"
},
{
"day": "Wednesday",
"hours": "8 AM–5 PM"
},
{
"day": "Thursday",
"hours": "8 AM–5 PM"
},
{
"day": "Friday",
"hours": "8 AM–4 PM"
},
{
"day": "Saturday",
"hours": "Closed"
},
{
"day": "Sunday",
"hours": "Closed"
}
],
"openingHoursComplete": true,
"openState": "Open · Closes 5 PM",
"timezone": "America/Chicago",
"additionalInfo": {
"Accessibility": [
{
"Wheelchair accessible entrance": true
},
{
"Wheelchair accessible parking lot": true
},
{
"Wheelchair accessible restroom": true
},
{
"Wheelchair accessible seating": true
}
]
},
"thumbnail": "https://lh5.googleusercontent.com/-gJOr85KBasI/AAAAAAAAAAI/AAAAAAAAAAA/L_fAS1EkjSM/s44-p-k-no-ns-nd/photo.jpg",
"searchString": "dentist in Austin",
"language": "en",
"rank": 1,
"scrapedAt": null
}
]Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
Google Maps Reviews
Local discoveryPublic place reviews with timestamps and completeness context.
https://api.apify.com/v2/acts/meka.im~google-maps-reviews-scraper/run-sync-get-dataset-itemsParameters
10 fieldscontractVersionintegerVersion 2 is the default anonymous feed. Original publication time and edit status are unknown (null). Choose 1 for the legacy cookie feed. A run cannot resume a Dataset or STATE created with the other version. Default: 2. Minimum: 1. Maximum: 2.
placesstring[]One place per line. Four forms are accepted and all resolve to the same place: a Google Maps link (https://www.google.com/maps?cid=… or /maps/place/…), a ChIJ… place ID, a numeric CID, or a 0x…:0x… feature ID. Anything else is skipped, reported in the run summary, and never charged.
sortstringAll four are Google's own orders, not a re-sort on our side. Newest follows Google and orders by last edit time, which is what updatedTime carries. Default: "mostRelevant". Accepted: "mostRelevant", "newest", "highest", "lowest".
maxReviewsintegerUpper bound per place. A place with fewer reviews returns what it has. Version 2 fetches up to 60 reviews per page; version 1 fetches 20. Default: 100. Minimum: 1. Maximum: 100000.
languagestringBCP-47 code such as en, de, ja, pt-BR. This is Google's interface language: it changes the relative time wording ("3 weeks ago" vs "vor 3 Wochen") and the language Google would translate into. It does NOT filter reviews — review text always comes back in the language the reviewer wrote it in. Anything unrecognised falls back to en. Default: "en".
requireCompletebooleanLegacy contract version 1 only. Google sometimes answers an anonymous session with a short five-review response that has no next page, which looks exactly like a genuine last page. On: retry with fresh sessions and, if the response is still short, mark every row incomplete: true. Off: accept the short response silently. Default: true.
placeConcurrencyintegerHow many places to scrape at the same time. Delivery order is preserved regardless. Default: 2. Minimum: 1. Maximum: 8.
sessionRetriesintegerLegacy contract version 1 only. How many fresh sessions to try when Google returns a truncated response, before the Actor re-queues the whole place and starts over after a longer pause. The truncation is bound to the session, and swapping sessions within a couple of seconds tends to land on the same one, so a low number here plus the re-queue is both faster and more reliable than a high number. Default: 3. Minimum: 0. Maximum: 8.
retryDelayMsintegerLegacy contract version 1 only. Pause before opening a fresh session. Retrying immediately lands on the same truncated variant more often. Default: 1500. Minimum: 0. Maximum: 10000.
sharedSessionExperimentbooleanLegacy contract version 1 only. Experimental opt-in. Reuses short-lived Google Maps sessions across Data Worker instances. Enable only for controlled latency and completeness comparisons. Default: false.
Response
21 fieldsreviewIdstringRequiredGoogle's own review id. Stable across sessions and sort orders, so it is the key to de-duplicate and join on.
textstring | nullThe review in the language the reviewer wrote it in. Not a machine translation.
languagestring | nullLanguage of text, as Google reports it.
ratingnumber | nullRequired1 to 5.
timestring | nullRequiredContract 2: null because the original publication time is unavailable. Contract 1: original publication time in ISO 8601 when available.
updatedTimestring | nullRequiredObserved update timestamp in ISO 8601, or null when unavailable. Contract 2 cannot determine original publication time or edit status. Contract 1 falls back to time for unedited reviews. Google's newest order follows this field.
isEditedboolean | nullRequiredContract 2: null because edit status is unknown. Contract 1: whether time and updatedTime differ.
relativeTimestring | nullGoogle's own wording, e.g. "2 months ago".
authorobjectRequiredPublic reviewer identity as Google shows it on the review. Nothing inferred.
ownerResponseobject | nullThe business reply, when there is one. Only a relative time is available.
imagesstring[]Photo URLs attached to the review.
placeobjectRequiredWhich place this review belongs to, plus the input it came from.
sortstringRequiredWhich order this run requested.
pagenumberpage
ranknumberPosition within this place, in the requested order.
variantstring | nullRequiredContract 2: full identifies the anonymous feed and does not guarantee completeness. Contract 1: full or teaser identifies the legacy response variant. See incomplete for known delivery limits.
incompletebooleanRequiredTrue when we know this place was not fully delivered. See the README on truncated responses.
expectednumber | nullexpected
scrapedAtstringRequiredscrapedAt
contractVersionnumberRequiredcontractVersion
requestedLanguagestring | nullGoogle interface language this run asked for. Review text is always the original language; this only affects relative time wording.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~google-maps-reviews-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"places":["https://www.google.com/maps?cid=7590626642755549500"],"sort":"newest","maxReviews":50,"language":"en","contractVersion":2}'Recorded item
Sep 24, 2026
[
{
"reviewId": "Ci9DQUlRQUNvZENodHljRjlvT25WdFVtOTFaSGt0TlV0RlFrcHZaWFZFVFc1b1RWRRAB",
"rating": 5,
"text": "Tí Cafe is a quaint and cozy little café off of Broadway. It boasts a diverse amount of delectable teas, coffees, and pastries.\nA great place to go with friends and family.\nStaff was kind, professional, and helpful.\n\nBeware, they often have a line out the door starting around when they open as well as off and on continuing into the afternoon.\nIt is difficult at times to find seating because of its high volumed nature.\nThis café is sought after by many people.\n\nIn the handful of times I have been there my favorite items have been the Banana Cream Pie Matcha Latte(a matcha latte presented with fresh cut banana, banana milk/custard, and what seems to be a Nilla-style cookie crumble over the top), paired with the Pandan Croissant. It is a perfect snack/pick me up to either start or end your day with. Highly recommend🖤🍵",
"updatedTime": "2026-06-09T17:26:32.824Z",
"dateText": "3 months ago",
"authorName": "Avery Rollins",
"authorUrl": "https://www.google.com/maps/contrib/103636067553999839366?hl=en"
}
]Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
Website Email Finder
Local discoveryPublished email addresses with exact source-page evidence.
https://api.apify.com/v2/acts/meka.im~website-email-finder/run-sync-get-dataset-itemsParameters
7 fieldsdomainsstring[]One domain per line, for example acme-widgets.de. A full URL works too; www. is stripped and duplicates are removed.
["apify.com"]startUrlsArray<string | { url: string }>Website URLs to start from, when you want a specific page instead of the homepage. Combined with the domains above.
maxResultsintegerHard cap on how many domains are written to the dataset across the whole run, including a resumed run. Minimum: 1. Maximum: 1000000.
maxPagesintegerHomepage plus up to four more: contact, about, team and legal/imprint. Lower it to 1 to scan homepages only — that is faster and cheaper, and in our own 1,039-domain test it found addresses on 39.9% of domains instead of 53.7%. Default: 5. Minimum: 1. Maximum: 5.
includeFreeMailbooleanKeep gmail.com, outlook.com and similar addresses when they are published as the site's contact address. Small businesses often use one. They are always labelled separately from addresses on the site's own domain. Default: true.
checkMxbooleanAdds mxAvailable to each address: whether the email domain publishes MX records. This is a DNS fact about the domain, not a check of the individual mailbox and not a deliverability guarantee. Default: true.
concurrencyintegerHow many batches of 8 domains run at once. Raise it for large lists, lower it if you want a gentler crawl. Default: 4. Minimum: 1. Maximum: 10.
Response
15 fieldsdomainstringThe input domain, lower-cased and without www.
inputValuestringExactly what you passed in.
websiteUrlstringThe URL that was actually reached, after redirects.
statusstringOnly contacts_found is charged. Accepted: "contacts_found", "no_contacts_found", "unreachable".
outcomestringFetch result of the homepage: ok, http_403, http_429, dns_failed, timeout, tls_failed, challenged, http_5xx, …
emailCountintegeremailCount Minimum: 0.
sameDomainCountintegerAddresses on the input domain, subdomains included. Minimum: 0.
freeMailCountintegergmail, outlook and similar, published as the site contact address. Minimum: 0.
otherDomainCountintegerotherDomainCount Minimum: 0.
excludedVendorCountintegerWebsite-builder and tooling addresses that were dropped. Minimum: 0.
emailsobject[]One entry per address, each with its source URL, page type and surrounding text.
pagesScrapedobject[]Every page that was fetched and how it ended.
requestsintegerrequests Minimum: 0.
tookMsintegertookMs Minimum: 0.
contractVersionintegercontractVersion Minimum: 1.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~website-email-finder/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"domains":["apify.com","example-shop.co.uk"],"maxPages":5,"includeFreeMail":true,"checkMx":true}'Recorded item
No recorded response is published for this API. The request contract remains available; the response shape follows the selected Actor.
Airbnb
Local discoveryAccommodation listings and public listing details.
https://api.apify.com/v2/acts/meka.im~airbnb-scraper/run-sync-get-dataset-itemsParameters
15 fieldslocationQueriesstring[]One destination per line, for example "Lisbon, Portugal". A comma is handled for you: Airbnb geocodes "Paris, France" to a different city unless the separator is normalised, which this Actor does.
startUrlsstring[]Airbnb room links (airbnb.com/rooms/…) or plain numeric room IDs. Order is preserved. Invalid entries are skipped and never charged.
includeDetailsbooleanOff: search results only, charged as listing-delivered. On: one extra public request per listing for amenities, house rules, sub-ratings, host and images, charged as detailed-listing-delivered. Direct room URLs always fetch details. Default: false.
maxResultsintegerAirbnb caps a single search at 15 pages. Pages overlap, so a destination yields roughly 220 unique listings at most. Default: 100. Minimum: 1. Maximum: 450.
checkInstringYYYY-MM-DD. Give both dates or neither. Without dates Airbnb picks a stay window per listing, so prices are not comparable across rows.
checkOutstringYYYY-MM-DD.
adultsintegerNumber of adults for the stay. Affects which listings Airbnb returns and how they are priced. Default: 1. Minimum: 1. Maximum: 16.
childrenintegerNumber of children aged 2 to 17. Default: 0. Minimum: 0. Maximum: 15.
infantsintegerNumber of infants under 2. Airbnb does not count them toward a listing capacity. Default: 0. Minimum: 0. Maximum: 5.
petsintegerNumber of pets. Listings that do not allow pets are filtered out by Airbnb. Default: 0. Minimum: 0. Maximum: 5.
currencystringPrices come back in this currency, as Airbnb formats them. Default: "USD".
localestringLanguage of names, descriptions and amenity labels. Default: "en-US".
priceMinintegerAirbnb filters on the nightly price. The price field on each row is the stay total, so a row's own number will not fall inside this range. Minimum: 0. Maximum: 100000.
priceMaxintegerAirbnb filters on the nightly price. The price field on each row is the stay total, so a row own number will not fall inside this range. Minimum: 0. Maximum: 100000.
enrichUserProfilesbooleanOne extra public request per host for about text, hosting years, host rating and review count, listing count, verification and profile highlights such as languages. Charged at the same rate; a failed enrichment never fails the listing. Default: false.
Response
49 fieldslistingIdstringAirbnb room ID. The stable key for joining and de-duplication.
urlstring | nullRoom URL with the stay parameters used.
namestring | nullListing name.
titlestring | nullAirbnb's type-and-place line, e.g. "Apartment in Lisbon".
subtitlestring | nullsubtitle
sourceModestring"search" when the row came from a destination search, "direct_url" when it came from a room URL.
priceSourcestring | null"search_result" when a price is present. Null for direct-URL rows: Airbnb does not expose booking prices to anonymous listing pages.
priceobject | null{ label, price, qualifier, originalPrice } as Airbnb formats them. Null for direct-URL rows.
stayWindowstring | nullThe window Airbnb priced, e.g. "Nov 29 – Dec 4".
checkInstring | nullcheckIn
checkOutstring | nullcheckOut
isAvailableboolean | nullNull in this version: Airbnb does not expose booking availability on anonymous listing pages.
ratingnumber | nullrating
reviewsCountinteger | nullreviewsCount
ratingTextstring | nullRating as shown, e.g. "4.81 (209)". "New" for new listings.
ratingDetailsobject | nullSix sub-ratings plus overall and review count. Only when details were fetched.
coordinatesobject{ latitude, longitude }.
propertyTypestring | nullpropertyType
roomTypestring | nullroomType
personCapacityinteger | nullpersonCapacity
homeTierinteger | nullhomeTier
subDescriptionobject | null{ title, items } such as "4 guests", "1 bedroom".
detailsstring[]Bed and bath line from the search card.
descriptionstring | nulldescription
htmlDescriptionstring | nullhtmlDescription
descriptionOriginalLanguagestring | nulldescriptionOriginalLanguage
seoTitlestring | nullseoTitle
metaDescriptionstring | nullmetaDescription
locationDescriptionsobject[]Neighbourhood sections. Titles are available; the body text is not exposed to anonymous pages, so content is usually null.
breadcrumbsobject[]breadcrumbs
amenitiesobject[]Grouped amenities, including entries marked unavailable.
houseRulesobject | nullhouseRules
highlightsobject[]highlights
imagesobject[]De-duplicated across search card and detail page.
badgesstring[]Such as "Guest favorite".
paymentMessagesstring[]Such as "Free cancellation".
hostobject | nullIdentity always; about, hosting years, host rating and listing count only when host enrichment ran.
coHostsobject[]coHosts
androidLinkstring | nullandroidLink
iosLinkstring | nulliosLink
hasDetailsbooleanWhether the detail page was fetched for this row.
hostEnrichedbooleanWhether host enrichment succeeded.
detailErrorstring | nullSet when the detail fetch failed and the row fell back to search data.
hostErrorstring | nullhostError
searchStringstring | nullThe destination this row came from. Null for direct-URL rows.
pageinteger | nullpage
rankinteger | nullrank
scrapedAtstringscrapedAt
contractVersionintegercontractVersion
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~airbnb-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"locationQueries":["Lisbon, Portugal"],"checkIn":"2026-11-10","checkOut":"2026-11-14","adults":2,"includeDetails":true}'Recorded item
Sep 24, 2026
[
{
"listingId": "20465848",
"url": "https://www.airbnb.com/rooms/20465848",
"name": "Chiado Loft 17 Charm Boutique Apartment",
"title": "Apartment in São Paulo",
"rating": 4.93,
"stayWindow": null,
"checkIn": null,
"checkOut": null,
"reviews": 563,
"price": "$263",
"priceQualifier": "for 2 nights"
}
]Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
Similarweb
Market researchWebsite traffic, engagement, and audience estimates.
https://api.apify.com/v2/acts/meka.im~similarweb-scraper/run-sync-get-dataset-itemsParameters
3 fieldsdomainsstring[]RequiredWebsites to analyse. Accepts example.com, www.example.com or https://example.com/path — the host is extracted for you. Entries that cannot be a domain are skipped and never charged. Default: [].
["stripe.com","nytimes.com"]maxDomainsintegerUpper bound on unique domains processed in one run. Duplicates collapse to a single lookup and a single result. Default: 1000. Minimum: 1. Maximum: 5000.
1000maxConcurrencyintegerHow many batches of 16 domains run in parallel. The upstream rate limit is the real ceiling, so raising this mostly adds waiting. Default: 2. Minimum: 1. Maximum: 10.
2
Response
24 fieldsdomainstringRequiredNormalized host that was looked up.
titlestringSite title. Empty string when the source has none.
descriptionstringSite description. Empty string when the source has none.
categorystringTwo-level category label, e.g. finance/banking_credit_and_lending.
globalRankinteger | nullGlobal traffic rank. Null for sites without one, including many subdomains and link shorteners.
countryRankobjectRank in the site's top country: Country, CountryCode, Rank. All null when absent.
categoryRankstring | nullRank inside the category, as a string.
visitsstringRequiredVisits in the snapshot month, as a string. "0" is a real zero.
bounceRatestringBounce rate from 0 to 1, as a string.
pagesPerVisitstringAverage pages per visit, as a string.
timeOnSitestringAverage seconds on site, as a string.
estimatedMonthlyVisitsobjectThree months of visits keyed by YYYY-MM-01.
trafficSourcesobjectShare of visits by source, each 0 to 1: SocialOrganic, SocialPaid, Mail, Referrals, SearchOrganic, SearchPaid, Direct, GenAi, Affiliate, DisplayAds.
topCountrySharesobject[]Visit share by country: Country, CountryCode, Value.
topKeywordsobject[]Top organic keywords: name, esitmatedValue, cpc. The misspelled key is the source's and is preserved.
competitorsobject[]Empty array. The public source used here does not return competitor lists.
isDataFromGAbooleanTrue when the site owner publishes its own analytics.
screenshotstringSource-hosted preview image URL.
snapshotDatestringRequiredMonth the numbers describe.
inputDomainstringThe domain exactly as the caller typed it.
normalizedDomainstringThe cleaned form that was queried. Internationalized names keep their Unicode spelling and are never converted to punycode.
dataAvailablebooleanWhether the source has measurable traffic for this site. False rows are written so the list stays aligned and are never charged.
keywordVolumesobject[]Organic search volume per keyword, aligned with topKeywords: name, volume.
aiTrafficobjectAI referral traffic: available, totalVisits, share (0 to 1), distributionBoundary, sources (per LLM with rank, share and monthlyHistory) and prompts. Unknown numbers are null; a confirmed absence is an empty array.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~similarweb-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"domains":["1password.com"],"maxDomains":1000,"maxConcurrency":2}'Recorded item
Sep 27, 2026
{
"domain": "1password.com",
"globalRank": 5485,
"countryRank": {
"Country": 840,
"CountryCode": "US",
"Rank": 2209
},
"visits": "9647437",
"bounceRate": "0.4371691206286031",
"pagesPerVisit": "4.619642728165759",
"timeOnSite": "157.70285663348605",
"estimatedMonthlyVisits": {
"2026-06-01": 8895293,
"2026-07-01": 9471977,
"2026-08-01": 9647437
},
"trafficSources": {
"SocialOrganic": 0.01672362496371915,
"SocialPaid": 0.0008991509642177346,
"Mail": 0.020818899838820768,
"Referrals": 0.14434892620133308,
"SearchOrganic": 0.13888276159712318,
"SearchPaid": 0.04399461192761805,
"Direct": 0.612661880057132,
"GenAi": 0.006080149948391083,
"Affiliate": 0.009997576149865704,
"DisplayAds": 0.0055924183517794684
},
"topCountryShares": [
{
"Country": 840,
"CountryCode": "US",
"Value": 0.51678943466488
},
{
"Country": 826,
"CountryCode": "GB",
"Value": 0.053649297119113516
}
],
"topKeywords": [
{
"name": "1password",
"esitmatedValue": 500760,
"cpc": 1.81
}
],
"snapshotDate": "2026-08-01T00:00:00+00:00",
"inputDomain": "1password.com",
"normalizedDomain": "1password.com",
"dataAvailable": true,
"keywordVolumes": [
{
"name": "1password",
"volume": 610340
}
],
"aiTraffic": {
"available": true,
"totalVisits": 39080.124,
"share": 0.004050829643697701,
"distributionBoundary": "<100K",
"sources": [
{
"source": "chatgpt.com",
"rank": 1,
"share": 0.9351798116096048,
"monthlyHistory": [
{
"date": "2026-08-01",
"share": 0.9351798116096048
},
{
"date": "2026-07-01",
"share": 0.6751080421341549
},
{
"date": "2026-06-01",
"share": 0.7754986652550027
}
]
}
],
"prompts": []
}
}Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
Google Ads Transparency
Market researchPublic advertiser information and advertising creative.
https://api.apify.com/v2/acts/meka.im~google-ads-transparency-scraper/run-sync-get-dataset-itemsParameters
16 fieldsresultTypestring"ads" returns individual ad creatives. "advertisers" returns one summary row per advertiser — a cheap way to check which companies run Google Ads. Default: "ads". Accepted: "ads", "advertisers".
queriesstring[]Free-text brand names (e.g. "Nike") or bare domains (e.g. "nike.com"). Brand names are resolved to advertisers through the Transparency Center's own autocomplete; anything that looks like a domain is used directly.
["Nike","hellofresh.com"]domainsstring[]Exact domains to pull ads for. Returns every advertiser account whose ads point at that domain.
["nike.com"]advertiserIdsstring[]Specific advertiser IDs starting with "AR", as they appear in an advertiser's Transparency Center URL.
["AR16735076323512287233"]startUrlsArray<string | { url: string }>Paste Transparency Center URLs: advertiser pages, creative pages, or domain search pages. They are parsed automatically.
[{"url":"https://adstransparency.google.com/advertiser/AR16735076323512287233?region=US"}]regionstringISO 3166-1 alpha-2 country code (US, DE, GB …), or ANYWHERE for no country filter. Several codes can be given comma-separated; results are the union. Default: "US".
"US"platformsstring[]Restrict to ads served on specific Google surfaces. Leave empty for all. Default: [].
adFormatstringFilter by creative format. Several formats can be given comma-separated. Default: "ALL". Accepted: "ALL", "TEXT", "IMAGE", "VIDEO".
startDatestringOnly ads shown on or after this date (YYYY-MM-DD).
"2026-01-01"endDatestringOnly ads shown on or before this date (YYYY-MM-DD).
"2026-06-01"maxAdsPerSearchintegerMaximum ad creatives to collect for each domain or advertiser. Default: 100. Minimum: 1. Maximum: 50000.
maxResultsintegerHard cap on delivered rows across all targets. This is what you pay for. Default: 1000. Minimum: 1. Maximum: 100000.
maxAdvertisersPerQueryintegerWhen a brand-name query resolves to several advertisers, how many of the top matches to scrape. Default: 5. Minimum: 1. Maximum: 50.
includeDetailsbooleanOn by default. Adds every creative variation, the per-country reach with each country's last-shown date, and EU impression ranges. Turn it off for a faster, list-only run. Default: true.
detailConcurrencyintegerHow many detail batches to fetch in parallel. Default: 2. Minimum: 1. Maximum: 8.
disableTelemetrybooleanTurn off the anonymous reliability telemetry described in the README. When this is on, nothing about your run — including your search terms — leaves the run. Default: false.
Response
29 fieldscreativeIdstringTransparency Center creative ID, e.g. CR09405416287280037889.
advertiserIdstringTransparency Center advertiser ID, e.g. AR16735076323512287233.
advertiserNamestring | nullAdvertiser display name as Google publishes it.
domainstring | nullLanding domain the ad points at. Null when the creative was reached by advertiser or creative URL, where the search row is not available.
formatstring | nullTEXT, IMAGE or VIDEO. Unknown enum values come through as the raw number.
firstShownstring | nullISO timestamp of the first recorded impression.
lastShownstring | nullISO timestamp of the most recent recorded impression.
shownForDaysinteger | nullDays the creative has been running, as reported by Google. Null when absent; never 0 for unknown.
previewTypestring | null"image" for an archived bitmap preview with a direct URL, "iframe" for a Google-hosted render page. Null when neither is present.
imageUrlstring | nullDirect CDN URL of the archived image preview. Null for render-page previews.
previewUrlstring | nullGoogle-hosted preview render page. Not a raw asset URL. Null for archived image previews.
widthinteger | nullPixel width of the archived image preview. Null for render-page previews.
heightinteger | nullPixel height of the archived image preview. Null for render-page previews.
googleCreativeIdstring | nullGoogle's internal creative ID, parsed from the preview URL. Null for plain image ads.
googleCustomerIdstring | nullObfuscated Google Ads customer ID, parsed from the preview URL. Groups ads from the same ad account. Null for plain image ads.
adGroupIdstring | nullAd group ID parsed from the preview URL. Clusters ads from the same campaign. Null for plain image ads.
versionIdstring | nullCreative version ID parsed from the preview URL. Null when absent.
adUrlstringTransparency Center link to this creative.
regionstringThe country filter this row was collected under, echoed back. ANYWHERE when no country filter was used.
variationCountintegerNumber of creative variations. Only present when includeDetails is on.
variationsobject[]Every creative variation: type, imageUrl, previewUrl, width, height and internal IDs. Only present when includeDetails is on.
regionsShownobject[]Every country the ad ran in, each with that country's last-shown date. Only present when includeDetails is on.
euTransparencyobjectEU DSA transparency block: available, impressions.lowerBound / upperBound, firstShownDate, lastShownDate and platformDistribution. available is false when Google publishes none for this creative. Only present when includeDetails is on.
namestring | nullAdvertiser display name.
countryCodestring | nullISO 3166-1 alpha-2 country the advertiser is registered in.
approxAdCountLowinteger | nullLower bound of Google's approximate ad count for this advertiser. Null when Google publishes no range.
approxAdCountHighinteger | nullUpper bound of Google's approximate ad count. Null when Google publishes no range.
matchedQuerystring | nullThe input that produced this row.
advertiserUrlstringTransparency Center link to the advertiser page.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~google-ads-transparency-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"queries":["Nike"],"domains":["hellofresh.com"],"resultType":"ads","region":"US","maxResults":100,"includeDetails":true}'Recorded item
Sep 24, 2026
[
{
"advertiserId": "AR01625195283841286145",
"creativeId": "CR10286644044847120385",
"advertiserName": "Shopify Inc.",
"domain": "shopify.com",
"format": "TEXT",
"firstShown": "2025-12-19T08:00:00.000Z",
"lastShown": "2026-09-24T15:45:31.000Z",
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/2754200431253643147",
"url": "https://adstransparency.google.com/advertiser/AR01625195283841286145/creative/CR10286644044847120385?region=anywhere"
}
]Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
LinkedIn Ads Library
Market researchPublic advertising records. Interactive preview is paused during source maintenance.
Preview paused
https://api.apify.com/v2/acts/meka.im~linkedin-ads-library-scraper/run-sync-get-dataset-itemsParameters
4 fieldsstartUrlsArray<string | { url: string }>RequiredLinkedIn Ad Library search URLs or LinkedIn company URLs. Search parameters such as accountOwner, payer, keyword, countries, dates, impressions, targeting, and sort are preserved.
[{"url":"https://www.linkedin.com/ad-library/search?accountOwner=apify&countries=US&dateOption=last-30-days"}]resultsLimitinteger | nullMaximum successfully delivered ads per input URL. Leave empty to continue until LinkedIn reports the true end or your run budget is reached. Minimum: 1. Maximum: 100000.
100skipDetailsbooleanFast list mode. Returns the public search-card fields, which may contain truncated text and fewer details. Full details are recommended. Default: false.
disableTelemetrybooleanTurn off the anonymous reliability telemetry described in the README. When this is on, nothing about your run — including the keywords in your Ad Library URLs — leaves the run. Default: false.
Response
25 fieldsadIdstringRequiredLinkedIn Ad Library ad identifier.
adLibraryUrlstringRequiredCanonical public Ad Library detail URL.
advertiserLogostring | nullPublic advertiser logo or profile image URL.
advertiserNamestringRequiredAdvertiser name displayed by LinkedIn.
advertiserUrlstring | nullPublic LinkedIn company or member URL.
availabilityobject | nullFirst and last shown dates when LinkedIn exposes them.
bodystring | nullFull public ad copy in detail mode; possibly truncated in list mode.
clickUrlstring | nullPublic creative or CTA destination URL.
ctasstring[]Public call-to-action labels.
formatstringRequiredObserved LinkedIn creative format.
headlinestring | nullCreative headline when publicly present.
imageUrlstring | nullPrimary image creative URL.
videoUrlstring | nullHighest-bitrate public MP4 URL.
documentUrlstring | nullPublic document PDF URL.
imageUrlsstring[]All public document page images.
senderImageUrlstring | nullMessage Ad sender image.
paidBystring | nullEntity LinkedIn identifies as paying for the ad.
impressionsstring | nullPublic impression range.
impressionsPerCountryobject[]Country impression percentages when published.
targetingobject | nullTop public targeting parameters.
thoughtLeaderMemberNamestring | nullThought Leader ad member name.
thoughtLeaderMemberUrlstring | nullThought Leader public member URL.
thoughtLeaderMemberImageUrlstring | nullThought Leader member image.
thoughtLeaderJobTitlestring | nullThought Leader public headline.
startUrlstringRequiredOriginal input source URL that discovered the ad.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~linkedin-ads-library-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"startUrls":[{"url":"https://www.linkedin.com/ad-library/search?accountOwner=apify&countries=US&dateOption=last-30-days"}],"resultsLimit":100,"skipDetails":false}'Recorded item
Sep 24, 2026
[
{
"adId": "1619931196",
"adLibraryUrl": "https://www.linkedin.com/ad-library/detail/1619931196",
"advertiserName": "",
"body": "The exact decks, investor lists, and AI agents top startups used to close their first checks. Free guide, free Notion tr…",
"format": "DOCUMENT"
}
]Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
Public pins, boards, profiles, and media references.
https://api.apify.com/v2/acts/meka.im~pinterest-scraper/run-sync-get-dataset-itemsParameters
7 fieldsqueriesstring[]Keywords to search Pinterest for. Each keyword is paginated until the run hits Max results.
["minimalist kitchen","summer outfit ideas"]startUrlsstring[]Paste Pinterest URLs: a pin, a profile, a profile's Created or Saved tab, a board, or a search results page. Each is routed automatically.
["https://www.pinterest.com/nike/","https://www.pinterest.com/nike/nike-running/","https://www.pinterest.com/pin/633600241367267936/"]typestringWhat keyword searches return. Pins and videos come back as pin records; boards and profiles come back as board and profile records. Default: "all-pins". Accepted: "all-pins", "videos", "boards", "profiles".
limitintegerHard cap on delivered rows across every keyword and URL. This is what you pay for. Default: 100. Minimum: 1. Maximum: 100000.
includeDetailsbooleanOn by default. Adds one lookup per pin for video files, merchant attribution and product metadata. Turn it off for a faster, list-only run. Default: true.
bookmarkstringOptional. Paste the lastBookmark from a previous run's output to continue paginating the first target where it stopped.
detailConcurrencyintegerHow many detail batches to fetch in parallel. Default: 2. Minimum: 1. Maximum: 8.
Response
17 fieldstypestring"pin", "video", "board" or "profile".
entity_typestringThe record's entity: pin, board or profile. Videos are pins.
schemaobjectContract version and entity type.
idstringPinterest ID of the pin, board or profile.
urlstring | nullCanonical Pinterest URL for the record.
titlestring | nullPin title, board name or profile display name.
source_urlstring | nullThe Pinterest page this record came from.
seed_typestring"query" when the record came from a keyword, "url" when it came from a pasted URL.
seed_valuestringThe keyword or URL that produced this record.
pinobject | nullPin fields: title, description, alt_text, created_at, link, domain, dominant_color, is_promoted, is_video, reaction_counts, story, product_metadata_type, rich_summary_type. Present on pin records.
creatorobject | nullThe pin's creator: id, username, full_name, follower_count, three avatar sizes, profile url, merchant and identity verification flags.
board_refobject | nullThe board the pin sits on: id, name, url, pin_count, section_count, collaborator_count, is_collaborative, cover images and the board owner.
mediaobject | nullimages (thumb / small / medium / large / original plus the raw images_by_size table) and video (hls_url, mp4_url, duration_ms, width, height, thumbnail, variants). video is null for still pins.
merchant_attributionobject | nullMerchant attribution block, present on shopping pins once details are fetched.
detail_fetchedbooleanWhether this row went through the per-pin detail lookup. Tells apart "the source has no value" from "we did not look".
boardobject | nullBoard record fields, including description and follower_count. Present on board records.
profileobject | nullProfile record fields, including about, pin_count, board_count, following_count and website_url. Present on profile records.
curl --request POST \
'https://api.apify.com/v2/acts/meka.im~pinterest-scraper/run-sync-get-dataset-items' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"queries":["minimalist kitchen","summer outfit ideas"],"type":"all-pins","limit":100,"includeDetails":true}'Recorded item
Sep 24, 2026
[
{
"id": "218987600628163284",
"url": "https://www.pinterest.com/pin/218987600628163284/",
"title": "The Rental Edit",
"description": "Shop The Rental Edit on Etsy for renter-friendly styling tips, room-by-room ideas, and budget-friendly sources.",
"createdAt": "2026-06-09T17:05:43.000Z",
"link": "https://studiobwithabby.etsy.com/listing/4517763392",
"domain": "studiobwithabby.etsy.com",
"isVideo": false
}
]Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.
Errors
An HTTP error response and an Actor-level failure are different signals. Inspect both the status code and the returned body, and do not assume a shared JSON error envelope across Actors.
- 400
- Invalid input
- 401 / 403
- Authentication or authorization
- 404
- Actor or route not found
- 408
- Synchronous wait exceeded
- 429
- Rate or concurrency limit
- 5xx
- Upstream or platform failure
The request body is not valid JSON or a value does not satisfy the Actor input schema.
The Apify token is missing, invalid or does not have access to the requested Actor or run.
The Actor identifier or endpoint path does not resolve. Confirm the complete published endpoint URL.
A synchronous request waited longer than 300 seconds. Use an asynchronous Run and read its Dataset when complete.
The request exceeded an Apify platform or account limit. Inspect response headers and account limits before retrying.
Apify or a dependent upstream service failed. Check the run status and response body before deciding whether to retry.
How to handle it
- 1Read both the HTTP status and the response body. These endpoints do not promise one shared JSON error envelope across all Actors.
- 2For 400, 401, 403 and 404, correct the request, token or URL instead of retrying unchanged.
- 3For HTTP 408, start an asynchronous Apify Run, wait for completion and then read its Dataset. The 300 second synchronous limit is an Apify platform behavior.
- 4For 429 and 5xx, back off before retrying and inspect the Actor run status. An HTTP success can still contain an Actor-level data problem.