
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape FINN.no Torget, Eiendom (homes, rentals, new builds, leisure, plots, commercial), Mobility (cars, MC, boats, caravans) and Jobb by URL or keyword: price, attributes, seller, agents and phones, location, images, full description.
Scrape finn.no, Norway's biggest marketplace: Torget items, real estate for sale and rent, cars, motorcycles and boats, and jobs. Paste any FINN search or ad URL, or type keywords with a location and price range, and get clean rows with price, attributes, seller or agency, agents' phone numbers, location, coordinates, images and the full description. No login, no browser, fast and cheap.
| Field | What it does |
|---|---|
startUrls | finn.no search URLs or ad URLs (any vertical), or plain FINN codes. |
searchQueries | Keywords, one per line. |
maxItems | Maximum ads saved in the run (default 20). |
includeDetails | Open each ad for its full details (default on). |
section | Section for keywords: torget, realestate-homes, realestate-lettings, realestate-newbuildings, car, mc, boat, job, ... |
location | County, municipality or district as named on FINN, e.g. Oslo, Vestland, Bergen. |
minPrice / maxPrice | Price range in NOK (monthly rent for rentals). |
sortBy | default, relevance, newest, price-asc, price-desc, year-desc, mileage-asc. |
{
"startUrls": [
{ "url": "https://www.finn.no/recommerce/forsale/search?q=sykkel" },
{ "url": "https://www.finn.no/realestate/lettings/search.html?location=0.20061&min_bedrooms=2" }
],
"searchQueries": ["tesla model y"],
"section": "car",
"location": "Vestland",
"maxItems": 100,
"includeDetails": true
}
Every row has the same core fields; vertical-specific fields are added on top.
| Field | Description |
|---|---|
id, url, vertical | FINN code, ad link and torget / realestate / mobility / job |
title, price, currency | Title and price in NOK (asking price, monthly rent or sale price) |
location, address, postalCode, city, latitude, longitude | Where the ad is |
publishedAt, updatedAt | When it was published and last changed |
sellerType, sellerName | private, business, agent or employer, and the shop, dealer, agency or employer name |
imageUrl, imageUrls, description, attributes | Images, full text, every attribute / specification |
| Real estate | propertyType, ownershipType, bedrooms, rooms, usableArea, plotArea, totalPrice, sharedCost, taxValue, collectiveDebt, rentPerMonth, deposit, energyLabel, constructionYear, facilities, viewings, agencyName, agents, contactPhones |
| Mobility | make, model, modelSpec, year, mileage, fuel, transmission, bodyType, power, driveType, color, registrationNumber, vin, firstRegistered, previousOwners, drivingRange, equipment, dealer info |
| Torget | category, categoryPath, condition, tradeType, buyNow, shippingAvailable |
| Jobs | jobTitle, company, companyUrl, deadline, positions, employmentType, extent, sector, industries, occupations, remoteOptions, applicationUrl, contacts, skills |
{
"id": "477117384",
"url": "https://www.finn.no/realestate/homes/ad.html?finnkode=477117384",
"vertical": "realestate",
"title": "2-roms selveierleilighet med stort potensiale. Oppussingsobjekt.",
"price": 5600000,
"currency": "NOK",
"address": "Drammensveien 93E, 0271, Oslo",
"latitude": 59.9164,
"longitude": 10.701,
"publishedAt": "2026-10-15T23:05:41Z",
"sellerType": "agent",
"sellerName": "Example Eiendomsmegling Oslo",
"propertyType": "Leilighet",
"ownershipType": "Selveier",
"bedrooms": 1,
"rooms": 2,
"usableArea": 66,
"totalPrice": 5741090,
"sharedCost": 2997,
"energyLabel": "D",
"constructionYear": 1937,
"viewings": ["2026-10-22 16:30 -17:15"],
"agents": [{ "name": "Kari Nordmann", "title": "Eiendomsmegler", "phones": ["400 00 000"] }],
"contactPhones": ["400 00 000"]
}
You pay per ad saved, with details included:
Platform usage (compute and proxy traffic) is billed on top and is small: about 40 KB of datacenter traffic per ad with details. Example: 1,000 car ads with details ≈ $1.60 + about $0.05 usage.
Is it legal to scrape FINN.no? The actor only reads public pages that anyone can open without logging in. You are responsible for how you use the data, including personal data such as agents' names and phone numbers, under GDPR and FINN's terms.
Do I need a FINN account or a proxy? No account. Datacenter proxies are used by default, and the actor switches to Norwegian residential proxies by itself if finn.no blocks them.
How many results can I get? FINN serves at most 50 pages (about 2,500 ads) per search. When a search has more, the actor splits it by region automatically. For even more, split it yourself by location or price range.
Why is a field empty? Not every ad has every field: private Torget sellers' names are not shown to visitors who are not logged in, and many ads have no phone number. Turn on Ad details for the full set of fields.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start runs and fetch results through the API and integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalFINN.no URLs
Search URLs or ad URLs from finn.no: Torget, Eiendom, Mobility and Jobb. Filters in a search URL (keywords, location, price, make, year, bedrooms, sort, ...) are kept and all pages are followed. Ad URLs (or plain FINN codes) are scraped directly.
searchQueriesarrayOptionalSearch keywords
One keyword per line, e.g. 'sykkel', 'tesla model y', 'sykepleier'. The section and filters below apply. Leave empty and pick a section (or location) to browse a whole section.
maxItemsintegerOptionaldefault 20Max listings
Maximum number of ads saved in this run, across all URLs and keywords. FINN shows at most 50 result pages per search, so big searches are split by region automatically.
includeDetailsbooleanOptionaldefault trueAd details
Also open each ad for the full description, all attributes and specifications, all images, agents and public phone numbers, equipment, job contacts and more. Turn off for faster, search-card-only results.
Applied to the search keywords (or to browsing a section). For other filters, set them on finn.no and paste the search URL.
sectionenumOptionaldefault "torget"Section
Which part of FINN.no the keywords search.
locationstringOptionalLocation
County, municipality or district as named on FINN, e.g. 'Oslo', 'Vestland', 'Bergen', 'Trondheim'.
minPriceintegerOptionalMin price (NOK)
Lowest price (rent for rentals).
maxPriceintegerOptionalMax price (NOK)
Highest price (rent for rentals).
sortByenumOptionaldefault "default"Sort by
Order of the results.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for finn.no. The actor switches to Norwegian residential proxies automatically if it gets blocked.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | number | boolean | null | FINN code (ad id) |
| url | string | number | boolean | null | Ad URL |
| vertical | string | number | boolean | null | torget, realestate, mobility or job |
| searchKey | string | number | boolean | null | FINN search key (section) |
| title | string | number | boolean | null | Title |
| price | string | number | boolean | null | Price in NOK (asking price, monthly rent or sale price) |
| currency | string | number | boolean | null | Currency |
| location | string | number | boolean | null | Location as shown in search |
| address | string | number | boolean | null | Address |
| postalCode | string | number | boolean | null | Postal code |
| city | string | number | boolean | null | Postal place |
| latitude | string | number | boolean | null | Latitude |
| longitude | string | number | boolean | null | Longitude |
| publishedAt | string | number | boolean | null | Published (UTC) |
| updatedAt | string | number | boolean | null | Last updated |
| sellerType | string | number | boolean | null | private, business, agent or employer |
| sellerName | string | number | boolean | null | Seller, agency, dealer or employer name |
| imageUrl | string | number | boolean | null | Main image |
| imageUrls | array | null | All images |
| description | string | number | boolean | null | Full description (plain text) |
| attributes | object | null | All attributes / specifications as label -> value |
| labels | array | null | Labels shown on the ad |
| category | string | number | boolean | null | Category |
| categoryPath | array | null | Category path |
| condition | string | number | boolean | null | Condition |
| tradeType | string | number | boolean | null | Ad type (for sale, give away, wanted) |
| fiksFerdig | string | number | boolean | null | Fiks ferdig (shipping/payment via FINN) |
| buyNow | string | number | boolean | null | Buy now available |
| shippingAvailable | string | number | boolean | null | Shipping available |
| sold | string | number | boolean | null | Sold / disposed |
| sellerId | string | number | boolean | null | Seller id |
| sellerAddress | string | number | boolean | null | Seller (shop) address |
| propertyType | string | number | boolean | null | Property type |
| ownershipType | string | number | boolean | null | Ownership type |
| bedrooms | string | number | boolean | null | Bedrooms |
| rooms | string | number | boolean | null | Rooms |
| floor | string | number | boolean | null | Floor |
| usableArea | string | number | boolean | null | Usable area (m²) |
| primaryArea | string | number | boolean | null | Primary area (m²) |
| areaFrom | string | number | boolean | null | Area from (m²) |
| areaTo | string | number | boolean | null | Area to (m²) |
| plotArea | string | number | boolean | null | Plot area (m²) |
| totalPrice | string | number | boolean | null | Total price incl. costs |
| sharedCost | string | number | boolean | null | Monthly shared cost |
| taxValue | string | number | boolean | null | Tax value |
| collectiveDebt | string | number | boolean | null | Collective debt |
| collectiveAssets | string | number | boolean | null | Collective assets |
| salesCosts | string | number | boolean | null | Sales costs |
| rentPerMonth | string | number | boolean | null | Monthly rent |
| deposit | string | number | boolean | null | Deposit |
| furnishing | string | number | boolean | null | Furnishing |
| availableFrom | string | number | boolean | null | Available from |
| energyLabel | string | number | boolean | null | Energy label |
| constructionYear | string | number | boolean | null | Construction year |
| facilities | array | null | Facilities |
| viewings | array | null | Viewings |
| localArea | string | number | boolean | null | Local area |
| agencyName | string | number | boolean | null | Real estate agency |
| agents | array | null | Agents (name, title, phones) |
| contactPhones | array | null | Public contact phone numbers |
| propertyInfo | object | null | Property info sections |
| prospectusUrl | string | number | boolean | null | Prospectus URL |
| make | string | number | boolean | null | Make |
| model | string | number | boolean | null | Model |
| modelSpec | string | number | boolean | null | Model specification |
| year | string | number | boolean | null | Model year |
| mileage | string | number | boolean | null | Mileage (km) |
| fuel | string | number | boolean | null | Fuel |
| transmission | string | number | boolean | null | Transmission |
| bodyType | string | number | boolean | null | Body type |
| power | string | number | boolean | null | Engine power |
| driveType | string | number | boolean | null | Wheel drive |
| color | string | number | boolean | null | Colour |
| registrationNumber | string | number | boolean | null | Registration number |
| vin | string | number | boolean | null | VIN / chassis number |
| firstRegistered | string | number | boolean | null | First registered |
| previousOwners | string | number | boolean | null | Owners |
| drivingRange | string | number | boolean | null | Driving range (WLTP) |
| warrantyMonths | string | number | boolean | null | Warranty (months) |
| dealerSegment | string | number | boolean | null | Dealer segment |
| equipment | array | null | Equipment list |
| sellerYearsOnFinn | string | number | boolean | null | Dealer years on FINN |
| sellerAdCount | string | number | boolean | null | Dealer ad count |
| jobTitle | string | number | boolean | null | Job title |
| company | string | number | boolean | null | Employer |
| companyUrl | string | number | boolean | null | Employer website |
| companyOrgNumber | string | number | boolean | null | Employer org number |
| deadline | string | number | boolean | null | Application deadline |
| positions | string | number | boolean | null | Positions |
| employmentType | string | number | boolean | null | Employment type |
| extent | string | number | boolean | null | Full/part time |
| sector | string | number | boolean | null | Sector |
| industries | array | null | Industries |
| occupations | array | null | Occupations |
| remoteOptions | array | null | Remote work |
| applicationUrl | string | number | boolean | null | Apply URL |
| contacts | array | null | Job contacts (name, title, phone) |
| skills | array | null | Skills |
| keywords | array | null | Keywords |
| descriptionHtml | string | number | boolean | null | Description HTML (jobs) |
| logoUrl | string | number | boolean | null | Employer logo |
| searchSource | string | number | boolean | null | Search or URL the ad came from |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job ad | One FINN.no job ad saved to the dataset (details included). | $0.00075 |
| Listing | One FINN.no Torget, real estate or vehicle ad saved to the dataset (details included). | $0.0016 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/finn-scraper').call({
"startUrls": [
{
"url": "https://www.finn.no/recommerce/forsale/search?q=sykkel"
}
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/finn-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/finn-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Search FINN job ads by keyword with full job details.
Homes for sale in Oslo within a price range, with details.
Used car listings in a region sorted by price.
Latest rental homes in a city.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.