I will build an etl data pipeline that cleans and enriches on the way through
Python Data Engineer: Web Scraping, ETL Pipelines and Data Enrichment
Level 2
Has met high performance criteria and has a proven track record for meeting client expectations.
About this Gig
Data arrives from six places and none of them agree. A REST API, two spreadsheets somebody maintains by hand, a scraper output, and a CRM export with different column names to all of them. Somebody spends a morning a week stitching it together.
What the pipeline does
- Extracts from websites, REST APIs, databases, and files
- Cleans, deduplicates and reshapes into one schema you define
- Enriches records against other sources: company data, contacts, geodata
- Loads into BigQuery, PostgreSQL, MySQL, Sheets, or your CRM
- Runs on a schedule, orchestrated in Airflow or n8n
Built so it does not fail quietly
- Retries and rate limiting on every source
- Validation inside the pipeline, so bad rows are caught before they land
- Alerts when a run fails or a field starts arriving empty
I built the pipeline behind 1M+ US attorney profiles, running unattended.
You get the working pipeline, the source code, and setup docs written for whoever inherits it. Tell me your sources and your destination, and I will scope it and quote before you order.
My Portfolio
FAQ
What sources can you connect?
Websites and scrapers, REST and GraphQL APIs, PostgreSQL, MySQL, MongoDB, BigQuery, CSV and Excel files, Google Sheets, and most CRMs through their API. If a source has an API or a page, it can usually be a source. Send me the list and I will confirm before quoting.
Where can it load the data?
BigQuery, PostgreSQL, MySQL, MongoDB, Google Sheets, S3, or flat files. If the destination is a CRM or an app rather than a warehouse, that is an integration and it works the same way. Tell me what reads the data afterwards and I will write into what that expects.
How is it scheduled and where does it run?
Airflow when the workflow has real dependencies between steps, n8n when it is simpler and you want to see it, and a plain cron job when neither is worth the overhead. It runs on your server or your cloud account, so there is no dependency on me after handover.
Can you integrate two tools that do not talk to each other?
Yes, and it is a common version of this job. Pull from one API, transform to what the other expects, push, handle the errors and the rate limits, then schedule it. HubSpot, Airtable, Salesforce, Sheets and most REST APIs. Zapier or n8n where those fit, custom Python where they do not.
What can you enrich records with?
Company size, industry, location, website, technology in use, business emails and phone numbers, decision-maker names, and geocoding. What is available depends on the source, so I will tell you which fields will realistically come back filled before you order rather than after.
Do I get the code?
Yes, all of it, documented, and yours to change. The handover includes the repository, a readme covering install and configuration, the schedule definition, and the connection settings with your own credentials rather than mine.
What happens when a source changes and the pipeline breaks?
It alerts you, which is the point. Validation runs inside the pipeline rather than after it, so a source that starts returning empty fields fails the run instead of quietly loading nulls into your warehouse. Premium includes the monitoring and alert setup.
Can you monitor and maintain it after delivery?
Premium includes monitoring and alerting at handover. Ongoing maintenance, where I watch the alerts and fix breakages, is a separate monthly arrangement. Most clients take the code and run it, which is why the docs are written for a stranger rather than for you.
How much data can it handle?
The largest single job processed 100M+ JSON files down into analysis-ready CSV. Volume is usually a design question rather than a limit: batching, incremental loads and where the transform happens. Tell me the row counts and the frequency and I will tell you the shape.
This looks expensive. Is there a smaller version?
Yes. If you need one source pulled into one destination on a schedule, Basic covers it and nothing else is needed. If you want the data once rather than repeatedly, my scraping gig is a tenth of the price and the right answer. I will say so rather than upsell you.
