Indeed không có API tìm việc, và một yêu cầu thông thường chỉ nhận về bước kiểm tra bảo mật, không phải việc làm. Web Unlocker mở trang tìm kiếm trong một trình duyệt thật và trả về trang với 50 thẻ việc làm, kèm mức lương và xếp hạng, tính như một trang: 1.000 việc làm chỉ 2 cent.
1.000 yêu cầu miễn phí · Chỉ tính phí khi thành công · 195+ quốc gia · Sẵn sàng cho Claude
Trang Indeed mất 10 đến 30 giây để tải. Hệ thống vẫn đang xử lý, bạn không cần nhấp lại.
Sẵn sàng cho các lượt tìm kiếm của riêng bạn? Nhận API key hoặc đặt lịch demo.
Hãy cho chúng tôi biết đôi nét về đội ngũ của bạn để nhận:
Một trang tìm việc trên Indeed chứa 50 thẻ việc làm kèm mức lương, xếp hạng công ty và ngày đăng, và Web Unlocker tính phí nó như một trang. Các scraper Indeed trên Apify và Bright Data tính phí mỗi việc làm như một bản ghi riêng.
Một trang, 50 việc làm.
Hai mươi trang, 1.000 việc làm.
Cần mô tả đầy đủ? Trang riêng của mỗi việc làm là thêm một yêu cầu, nên 1.000 việc làm kèm mô tả có giá $1.00. Chia thị trường theo ngày đăng, bán kính, mức lương hoặc làm việc từ xa, và mỗi bộ lọc là thêm một trang 50 việc làm.
Chi phí cho 1.000 việc làm Indeed kèm mô tả đầy đủ
20 trang tìm kiếm và 1.000 trang việc làm, theo giá công bố
Bright Data, Indeed Scraper của chính Apify và Indeed Job Scraper trên Apify tính phí mỗi việc làm như một bản ghi: 1.000 bản ghi ở giá pay-as-you-go và gói Free.
Một trăm trang Indeed được yêu cầu liên tiếp, không thử lại: tìm việc ở 40 thành phố, trang việc làm, trang công ty, trang đánh giá và bốn trang theo quốc gia. Đây là những gì trả về, và nhanh đến đâu.
Trang không trả về thì tốn $0.
Bạn trả tiền cho trang, không phải cho số lần thử.
Sắp xếp lượt tìm kiếm theo ngày hoặc giới hạn trong 24 giờ qua, và các tin mới nhất nằm trên cùng. Script của bạn yêu cầu đúng trang đó bao nhiêu lần tùy bạn: kiểm tra mỗi giờ là 24 trang mỗi ngày, $0.71 mỗi tháng.
Bộ dữ liệu việc làm cập nhật theo tháng.
Trang của bạn là của hôm nay.
Thu thập Indeed không cần phân tích HTML: JSON của chính Indeed nằm trong mọi trang tìm kiếm, 50 việc làm kèm chức danh, công ty, mức lương, xếp hạng và ngày đăng. Trang của một việc làm cũng chứa mô tả đầy đủ theo cách đó.
Điền biểu mẫu ở trên. Key sẽ được gửi qua email trong vòng một ngày làm việc.
Một lượt tìm kiếm với limit=50 cho 50 việc làm, trang của một việc làm để lấy mô tả, hoặc tab việc làm của một công ty, từng trang một.
Cắt mảng results ra khỏi trang và bạn có mọi trường mà Indeed hiển thị, từ mức lương đến ngày đăng.
pip install requestsGOLOGIN_SCRAPING_API_KEY=your_key python indeed_jobs.pyhttps://parsing.webunlocker.gologin.com/v1/scrapeimport json
import os
import time
from urllib.parse import urlencode
import requests
query = "marketing manager"
where = "Austin, TX"
def scrape(url):
for attempt in range(3):
response = requests.get(
"https://parsing.webunlocker.gologin.com/v1/scrape",
params={"url": url, "geo": "us", "format": "json"},
headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
timeout=90,
)
page = response.json().get("data", {}).get("html", "") if response.ok else ""
if '"results":[{' in page:
return page
time.sleep(5)
raise RuntimeError("No jobs came back, try again later")
def embedded(page, marker):
start = page.index(marker) + len(marker) - 1
value, _ = json.JSONDecoder().raw_decode(page[start:])
return value
search = "https://www.indeed.com/jobs?" + urlencode({"q": query, "l": where, "limit": 50})
page = scrape(search)
jobs = [
{
"title": job["title"],
"company": job["company"],
"location": job["formattedLocation"],
"salary": (job.get("salarySnippet") or {}).get("text"),
"rating": job.get("companyRating") or None,
"posted": job.get("formattedRelativeTime"),
"sponsored": job.get("sponsored", False),
"url": "https://www.indeed.com/viewjob?jk=" + job["jobkey"],
}
for job in embedded(page, '"results":[')
]
print(json.dumps({"query": query, "where": where, "jobs_on_page": len(jobs), "jobs": jobs}, indent=2, ensure_ascii=False))GOLOGIN_SCRAPING_API_KEY=your_key node indeed-descriptions.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeconst search = 'https://www.indeed.com/jobs?q=registered+nurse&l=Remote&limit=50';
const wanted = 5;
async function scrape(url, marker) {
for (let attempt = 1; attempt <= 3; attempt++) {
const params = new URLSearchParams({ url, geo: 'us', format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const page = response.ok ? (await response.json()).data?.html : '';
if (page?.includes(marker)) return page;
await new Promise((resolve) => setTimeout(resolve, 5000));
}
throw new Error(`Nothing came back for ${url}, try again later`);
}
const field = (page, name) => JSON.parse(page.match(new RegExp(`"${name}":("(?:[^"\\\\]|\\\\.)*")`))?.[1] ?? '""');
const text = (markup) => markup.replace(/<[^>]+>/g, ' ').replace(/&/g, '&').replace(/ /g, ' ').replace(/\s+/g, ' ').trim();
const listing = await scrape(search, '"results":[{');
const keys = [...new Set([...listing.matchAll(/"jobkey":"([0-9a-f]{16})"/g)].map((match) => match[1]))];
console.log(`${keys.length} jobs on the search page, reading the first ${wanted} in full`);
for (const key of keys.slice(0, wanted)) {
const job = await scrape(`https://www.indeed.com/m/viewjob?jk=${key}`, '"sanitizedJobDescription"');
const description = text(field(job, 'sanitizedJobDescription'));
console.log(`\n${field(job, 'jobTitle')} at ${field(job, 'companyName')}, ${field(job, 'formattedLocation')} (${description.length} characters)`);
console.log(`${description.slice(0, 280)}...`);
}GOLOGIN_SCRAPING_API_KEY=your_key node indeed-company.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeconst company = 'Amazon.com';
const pages = 5;
async function scrape(url) {
for (let attempt = 1; attempt <= 3; attempt++) {
const params = new URLSearchParams({ url, geo: 'us', format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const page = response.ok ? (await response.json()).data?.html : '';
if (page?.includes('"results":[{')) return page;
await new Promise((resolve) => setTimeout(resolve, 5000));
}
throw new Error(`No jobs came back for ${url}, try again later`);
}
function embedded(page, marker) {
const start = page.indexOf(marker) + marker.length - 1;
const token = /"(?:[^"\\]|\\.)*"|[[\]{}]/g;
token.lastIndex = start;
let depth = 0;
for (let match = token.exec(page); match; match = token.exec(page)) {
depth += '[{'.includes(match[0]) ? 1 : ']}'.includes(match[0]) ? -1 : 0;
if (depth === 0) return JSON.parse(page.slice(start, match.index + 1));
}
return [];
}
const jobs = new Map();
for (let start = 0; start < pages * 20; start += 20) {
const page = await scrape(`https://www.indeed.com/cmp/${company}/jobs?start=${start}`);
const fresh = embedded(page, '"results":[').filter((job) => !jobs.has(job.jobkey));
if (fresh.length === 0) break;
for (const job of fresh) {
jobs.set(job.jobkey, { title: job.title, location: job.formattedLocation, salary: job.salarySnippet?.text ?? null, posted: job.formattedRelativeTime });
}
console.log(`page ${start / 20 + 1}: ${fresh.length} new jobs, ${jobs.size} so far`);
}
console.table([...jobs.values()].slice(0, 10));Sẵn sàng chạy nó trên các lượt tìm kiếm của riêng bạn? Nhận API key và các yêu cầu miễn phí.
Indeed không có API tìm việc cho ứng dụng của bạn, và mọi scraper việc làm Indeed làm sẵn đều tính phí từng việc làm. Đây là những gì mỗi hướng lấy dữ liệu việc làm Indeed đòi hỏi cho cùng 1.000 việc làm.
| Bạn cần gì | Indeed API | Apify | Bright Data | |
|---|---|---|---|---|
| Dữ liệu tìm việc cho ứng dụng của bạn | Có | Không | Có | Có |
| Bạn trả tiền cho | Một trang | Không có API | Mỗi việc làm | Mỗi bản ghi |
| 1.000 việc làm kèm mô tả đầy đủ | $1.00 | Không có | $0.10 đến $6 | $1.50 |
| Việc làm trong một yêu cầu | 50 | Không có | Tối đa 1.000 mỗi lần chạy | Một bản ghi |
| Trang 2 trở đi | Từ tài khoản của bạn | Không có | Có | Có |
| Đánh giá và mức lương của công ty | Có | Không | Không | Có |
| Toàn bộ trang ở dạng HTML hoặc Markdown | Có | Không | Không | Không |
| Miễn phí để bắt đầu cho doanh nghiệp | Có | Không | Có | Có |
Cần thu thập nhiều hơn Indeed? Web Unlocker trả về bất kỳ trang nào theo cùng cách, với cùng mức giá.
Web Unlocker trả về một trang cho mỗi yêu cầu, và Indeed chỉ cho khách xem một trang việc làm trước khi yêu cầu đăng nhập. Hãy thêm Cloud Browser cho phần còn lại: nó đăng nhập tài khoản Indeed của bạn một lần và giữ phiên đó luôn hoạt động, nên trang 2, trang 20 và trang 50 mở giống như trang 1, trên cùng một thiết bị và cùng một IP dân cư.
Phiên của bạn là một trình duyệt vẫn đang chạy, không phải một file được khôi phục. Tối nay đóng script, mai mở lại, và Indeed vẫn thấy cùng một người dùng đã đăng nhập.
Profile giữ cookie và IP dân cư của nó qua mỗi lần chạy, nên Indeed thấy một người trên một chiếc laptop, không phải một khách mới ở mỗi trang.
Điều khiển nó từ Playwright, Puppeteer hoặc Claude: mở tìm kiếm, nhấp trang tiếp, đọc các thẻ, lặp lại. Đã bao gồm IP dân cư.
Chạy nó từ Playwright, Puppeteer hoặc Claude. Xem Cloud Browser.
Một tài khoản, một mạng proxy, một hệ sinh thái. Chọn sản phẩm phù hợp với công việc.
Thu thập cả các trang web khác? Xem các scraper Google Maps, Reddit và YouTube, hoặc mọi công cụ thu thập dữ liệu web.
Gửi địa chỉ tìm kiếm Indeed tới Web Unlocker kèm limit=50. Nó mở trang trong một trình duyệt thật từ một địa chỉ Mỹ và trả về trang kèm JSON của chính Indeed bên trong: 50 việc làm với chức danh, công ty, địa điểm, mức lương, xếp hạng công ty, ngày đăng và liên kết. Đoạn code ở trên làm đúng như vậy.
Không dành cho tìm việc. Publisher API cũ, từng trả về danh sách việc làm, đã ngừng hoạt động, và các API hiện tại của Indeed dành cho các đối tác gửi việc làm lên Indeed, như hệ thống theo dõi ứng viên. Không API nào trả kết quả tìm kiếm cho bên thứ ba, nên một scraper đọc các trang công khai thay thế.
Không có Indeed API nào, dù trả phí hay miễn phí, để đọc tin tuyển dụng. Web Unlocker bắt đầu với 1.000 yêu cầu miễn phí, đủ cho 1.000 trang tìm kiếm, mỗi trang 50 việc làm.
Điều khoản của Indeed được viết cho những người đang tìm việc, và các trang tìm việc của Indeed là công khai, tải được mà không cần đăng nhập. Web Unlocker tải chúng giống như trình duyệt của một người dùng và trả về trang đó. Bạn thu thập gì và dùng ra sao là quyết định của bạn, vì vậy hãy đối chiếu với các quy định áp dụng cho dự án của bạn.
Tin tuyển dụng được đăng để người ta đọc, và scraper đọc các trang công khai mà người dùng nhìn thấy. Quy định khác nhau theo quốc gia và theo cách bạn dùng dữ liệu, nên hãy đối chiếu cách dùng của bạn với chúng. Web Unlocker trả về trang; phần còn lại là của bạn.
Một chương trình tải các trang của trang tuyển dụng và lấy các tin ra thành dữ liệu: chức danh, công ty, địa điểm, mức lương, ngày đăng, mô tả và liên kết. Trên Indeed, Web Unlocker lo phần tải trang, còn các trường được lấy ra từ JSON mà Indeed nhúng trong mọi trang.
Gửi địa chỉ tìm kiếm tới API scraper Indeed bằng thư viện requests, tìm mảng results trong trang và nạp nó bằng module json. Tab Python ở trên là một script hoàn chỉnh, đã được kiểm thử trên API thật: 50 việc làm trong một yêu cầu.
Trang của mỗi việc làm chứa nó. Mở indeed.com/m/viewjob?jk= kèm mã việc làm qua Web Unlocker: nó trả về mô tả dưới dạng văn bản và HTML, cùng chức danh, công ty, địa điểm và loại công việc. Một trang cho mỗi việc làm, 1.000 mô tả có giá $0.98.
Indeed cho khách xem một trang của lượt tìm kiếm và yêu cầu tài khoản ở trang tiếp theo. Có hai cách: chia lượt tìm kiếm theo ngày đăng, bán kính, mức lương hoặc làm việc từ xa, và mỗi bộ lọc là một trang mới với 50 việc làm; hoặc mở Indeed trong Cloud Browser, đăng nhập tài khoản của chính bạn một lần, rồi lật từng trang từ phiên đó.
Mới như chính Indeed. Sắp xếp lượt tìm kiếm theo ngày hoặc lọc trong 24 giờ qua và trang hiển thị các tin được đánh dấu Just posted. Bộ dữ liệu việc làm bán theo bản ghi cập nhật theo tuần hoặc theo tháng; một trang là trang của hôm nay.
Có. Trang của một công ty trả về xếp hạng, số lượng đánh giá và các việc làm đang tuyển; các trang đánh giá của công ty trả về mỗi trang 20 đánh giá kèm ưu và nhược điểm, từng trang một; trang mức lương liệt kê mức trả theo chức danh. Các trang mức lương theo chức danh và thành phố cũng dùng được, kèm mức trung bình và khoảng dao động.
Có. Các trang Indeed của Anh, Canada, Đức và Pháp trả về trang tìm kiếm theo cùng cách, với quốc gia của IP được đặt tương ứng. Gửi địa chỉ của trang theo quốc gia và chọn geo trong yêu cầu.
Web Unlocker trả về trang chứ không phải một bảng, nên không có gì bị cắt trước khi bạn thấy. Chuyển các việc làm thành CSV chỉ cần vài dòng code, hoặc một prompt: đưa trang cho Claude cùng Gologin scraping skill và yêu cầu một file CSV.
Dưới $1 cho 1.000 trang trên API scraper Indeed, và cùng một mức giá cho mọi trang. Một trang tìm kiếm chứa 50 việc làm, nên 1.000 việc làm từ các trang tìm kiếm có giá 2 cent, và 1.000 việc làm kèm mô tả đầy đủ khoảng $1. Trang tải không được thì không tốn phí. Các gói bắt đầu từ $49 mỗi tháng cho 50.000 yêu cầu.
Có, để bắt đầu: Web Unlocker đi kèm 1.000 yêu cầu miễn phí, đủ cho 50.000 việc làm từ các trang tìm kiếm hoặc 1.000 mô tả công việc đầy đủ.
Tùy vào nhu cầu của bạn. Các scraper Indeed của Apify và Bright Data bán các dòng dữ liệu làm sẵn và tính phí mỗi việc làm như một bản ghi, và người dùng của họ cho biết có những lần chạy trả về ít việc làm hơn số Indeed hiển thị. Web Unlocker là một web scraper Indeed trả về toàn bộ trang với một mức giá, kèm JSON của chính Indeed bên trong, nên bạn tự quyết định giữ những trường nào.
Hãy cho chúng tôi biết đôi nét về đội ngũ của bạn để nhận: