Python Data Scraper / Web Scraping Expert (Part-Time to Full-Time)

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Part Time

SALARY

$7-8 hour

HOURS PER WEEK

20

DATE UPDATED

Sep 8, 2026

JOB OVERVIEW

Position: Part-Time (A few days per week, with potential to transition to Full-Time)
Starting Rate: $7.00 - $8.00 USD / hour (Performance-based increases available)
Location: Remote (Philippines)

We are seeking a highly experienced Python Data Scraper to join our remote team on a part-time basis. Initially, you will work directly alongside our US-based Lead Programmer to assist with ongoing data extraction projects. However, we are looking for a proactive problem-solver—if you bring fresh, innovative ideas to the table and consistently deliver high-quality data, this role can quickly expand into a full-time position with increased responsibilities and pay.

What You Will Do
Design, build, and maintain efficient, reliable Python web scrapers for various target websites.

Extract, clean, and structure large datasets accurately and rapidly.

Collaborate daily with our American lead programmer to understand specific project requirements and deliverables.

Troubleshoot and bypass anti-scraping mechanisms as they arise.

Suggest and implement new tools, architectures, or methodologies to improve our data gathering pipelines.

Requirements
Vast Web Scraping Experience: Deep expertise in Python and advanced web scraping frameworks/libraries (e.g., Scrapy, BeautifulSoup, Selenium, Playwright, Puppeteer).

Independent Infrastructure: You must have your own robust setup, including access to virtual machines (VMs), proxies, and the necessary hardware/software architecture to execute fast and highly accurate scrapes.

Exceptional English Communication: You must speak, read, and write English fluently. The ability to clearly understand complex technical requirements, ask the right questions, and communicate roadblocks is strictly required for this role.

Attention to Detail: A strong commitment to data accuracy and quality assurance.

Availability: Able to commit to a few days a week with a schedule that allows for reasonable overlap with US time zones for meetings and collaboration.

Why Work With Us?
Competitive Starting Pay: $7.00 - $8.00 per hour, which is well above average for part-time remote roles, with direct opportunities for raises based on the quality of your work.

Growth Potential: We want to hire for the long term. Prove your skills part-time, and we will gladly transition you to a full-time role.

Creative Freedom: We value innovation. If you know a better, faster way to get the job done, we want to hear it and implement it.

How to Apply & Technical Screening
To prove your English fluency and technical expertise, you must answer the following 4 questions in your cover letter or application message. Applications without these answers will be immediately rejected.

Anti-Bot Bypassing: How do you handle scraping a website that aggressively uses Cloudflare, DataDome, or other advanced bot-protection services?

Dynamic Content: If the data you need is not in the initial HTML load but is rendered dynamically via JavaScript, what is your preferred approach to extract it efficiently at scale without sacrificing speed?

Infrastructure & Scaling: Describe your current infrastructure (VMs, hardware) and explain your strategy for proxy rotation and managing rate limits when a project requires scraping millions of pages.

Problem Solving & Communication: Imagine a target website changes its DOM structure halfway through a critical data extraction run, causing your scraper to fail. How would you handle the immediate technical fix, and exactly how would you communicate this issue to our US lead programmer?

Please also confirm your available working hours in Pacific Standard Time (PST).

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0010
Controller Execution Time ( Jobseekers / Job )  0.0155
Total Execution Time  0.0173
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,505,536 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Python-Data-Scraper-Web-Scraping-Expert-Part-Time-to-Full-Time-1726411
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0087 seconds)  (Hide)
0.0011   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0024   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1726411
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 884547
 LIMIT 1 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1726411
AND `misc`.`id` IS NULL 
0.0004   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-10-19',ej.date_added) duration_days, DATEDIFF('2026-10-19',e.rebill_date) duration_rebill, ej.*, e.deactivate FROM employers e, employer_jobs ej WHERE e.employer_id = ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id = '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-10-19',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1726411' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1726411 
0.0017   UPDATE employer_jobs SET hit_counts = '***Sep-08-2026=299***Sep-09-2026=182***Sep-10-2026=61***Sep-11-2026=33***Sep-12-2026=32***Sep-13-2026=16***Sep-14-2026=19***Sep-15-2026=19***Sep-16-2026=23***Sep-17-2026=14***Sep-18-2026=25***Sep-19-2026=18***Sep-20-2026=13***Sep-21-2026=12***Sep-22-2026=12***Sep-23-2026=8***Sep-24-2026=15***Sep-25-2026=9***Sep-26-2026=11***Sep-27-2026=10***Sep-28-2026=15***Sep-29-2026=25***Sep-30-2026=32***Oct-01-2026=18***Oct-02-2026=20***Oct-03-2026=12***Oct-04-2026=19***Oct-05-2026=11***Oct-06-2026=14***Oct-07-2026=17***Oct-08-2026=19***Oct-09-2026=12***Oct-10-2026=13***Oct-11-2026=19***Oct-12-2026=15***Oct-13-2026=7***Oct-14-2026=10***Oct-15-2026=9***Oct-16-2026=12***Oct-17-2026=7***Oct-18-2026=2***Oct-19-2026=3' WHERE job_id= '1726411'  
0.0006   UPDATE employer_jobs SET monthly_hits = '***Sep-2026=903***Oct-2026=239' WHERE job_id= '1726411'  
0.0003   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1726411' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1726411 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '884547'
AND `date_added` >= '2022-06-08' 
0.0003   select * from teasers 
0.0002   SELECT * FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)