
Extract Horse Racing Sectional Data from At The Races into CSV
- or -
Post a project like this29
£100(approx. $134)
- Posted:
- Proposals: 14
- Remote
- #4487360
- Open for Proposals
⭐⭐⭐⭐⭐ Proofreading Expert|Shopify Website design & Management, Social Media Marketing Specialist, Content Creator, Virtual Assistant and Data entry expert, wix design, wordpress design

Full Stack Dot Net Developer | LinkedIn Lead Expert| Senior Web Developer |Python | API Expert |WordPress Developer | Angular | SQL | MS AZURE

Full-Stack Developer | Next.js, NestJS & Python | Scalable, High-Performance Web Apps
12150841470388313119734231840313847061310911624720941334334884666612859191323732710669988
Description
Experience Level: Entry
I am looking for an experienced PHP developer to build a local machine tool that reads a sample input CSV file, searches for horses on At The Races, extracts sectional data from the Sectional Times tab, and outputs the results into a second CSV file in an exact required format.
This must run locally on my machine. I do not want a cloud-based solution.
Project summary
The application must:
read an input file called sechorse.csv
use the horse names/details in that file to find the horses on attheraces.com
open the relevant horse/race pages
access the Sectional Times tab for each applicable race
extract the required sectional details
output the data into a file called sectional.csv
produce the output in the exact same layout and structure as my supplied sample sectional.csv
Important requirement
To qualify for this job, you must demonstrate that you understand how to transform the sample input file sechorse.csv into the required output layout contained in sectional.csv. I have attached the samples.
I am not looking for a vague proposal. I need someone who can show they understand:
how the input file will be read
how horses will be matched on ATR
how the sectional data will be extracted
how the extracted data will be mapped into the exact output structure
Core requirements
The tool must:
run in PHP on my local machine
read sechorse.csv
generate sectional.csv
overwrite sectional.csv on every run
not append
use data from the Sectional Times tab only
silently skip horses that cannot be matched
silently skip races where no sectional data is available
continue processing even if one horse or one race fails
Input file
Input filename: sechorse.csv
This contains the horses to be processed.
The script should either:
read this file from the project folder, or
allow me to point to the file locally
Output file
Output filename: sectional.csv
This must:
be created fresh on every run
replace any previous file of the same name
match my supplied sample output exactly in:
column names
column order
formatting
date layout
number layout
overall structure
Data source
Source website: At The Races
The script must find each horse, inspect the relevant race history, and extract data from the Sectional Times tab only.
Functional behaviour
For each horse in sechorse.csv, the tool should:
read the horse details
search or locate the horse on ATR
open the horse record and relevant races
access the Sectional Times tab
extract the relevant data
map the result into the exact output format required by sectional.csv
write the row(s) to the output file
Error handling
The script must handle the following gracefully:
horse not found
multiple possible horse matches
missing race page
missing sectional tab
no sectional data for a race
temporary ATR page/load failures
invalid or incomplete input rows
In these cases, the script should skip and continue wherever possible.
Logging
Minimal logging is fine, but the tool should not stop for routine failures.
Optional logging can include:
horse searched
horse matched
race checked
sectionals found
skipped reason
This is optional and should not interfere with the main output.
Deliverables
I need:
full PHP source code
composer.json
setup instructions
run instructions
list of prerequisites
clear note on any browser driver or local dependency required
a working solution that reads sechorse.csv and produces sectional.csv
Qualification / proof required before selection
When responding, please provide:
a brief explanation of how you will approach the extraction
confirmation that the script will run locally in PHP
confirmation that sectional.csv will be overwritten, not appended
confirmation that unmatched horses will be silently skipped
confirmation that you can map the input sample file into the exact output structure
ideally a short explanation of how you would handle JavaScript-rendered content on ATR
Acceptance criteria
The project will be considered complete when:
the solution runs locally on my machine
it reads sechorse.csv
it extracts sectional information from ATR
it uses the Sectional Times tab
it generates sectional.csv
the output matches the supplied sample layout exactly
the output file is replaced on each run
unmatched horses are skipped silently
Ideal developer
I am looking for someone who has experience with:
PHP scraping or browser automation
CSV input/output handling
dynamic website interaction
reliable local-script development
clean, maintainable code
This must run locally on my machine. I do not want a cloud-based solution.
Project summary
The application must:
read an input file called sechorse.csv
use the horse names/details in that file to find the horses on attheraces.com
open the relevant horse/race pages
access the Sectional Times tab for each applicable race
extract the required sectional details
output the data into a file called sectional.csv
produce the output in the exact same layout and structure as my supplied sample sectional.csv
Important requirement
To qualify for this job, you must demonstrate that you understand how to transform the sample input file sechorse.csv into the required output layout contained in sectional.csv. I have attached the samples.
I am not looking for a vague proposal. I need someone who can show they understand:
how the input file will be read
how horses will be matched on ATR
how the sectional data will be extracted
how the extracted data will be mapped into the exact output structure
Core requirements
The tool must:
run in PHP on my local machine
read sechorse.csv
generate sectional.csv
overwrite sectional.csv on every run
not append
use data from the Sectional Times tab only
silently skip horses that cannot be matched
silently skip races where no sectional data is available
continue processing even if one horse or one race fails
Input file
Input filename: sechorse.csv
This contains the horses to be processed.
The script should either:
read this file from the project folder, or
allow me to point to the file locally
Output file
Output filename: sectional.csv
This must:
be created fresh on every run
replace any previous file of the same name
match my supplied sample output exactly in:
column names
column order
formatting
date layout
number layout
overall structure
Data source
Source website: At The Races
The script must find each horse, inspect the relevant race history, and extract data from the Sectional Times tab only.
Functional behaviour
For each horse in sechorse.csv, the tool should:
read the horse details
search or locate the horse on ATR
open the horse record and relevant races
access the Sectional Times tab
extract the relevant data
map the result into the exact output format required by sectional.csv
write the row(s) to the output file
Error handling
The script must handle the following gracefully:
horse not found
multiple possible horse matches
missing race page
missing sectional tab
no sectional data for a race
temporary ATR page/load failures
invalid or incomplete input rows
In these cases, the script should skip and continue wherever possible.
Logging
Minimal logging is fine, but the tool should not stop for routine failures.
Optional logging can include:
horse searched
horse matched
race checked
sectionals found
skipped reason
This is optional and should not interfere with the main output.
Deliverables
I need:
full PHP source code
composer.json
setup instructions
run instructions
list of prerequisites
clear note on any browser driver or local dependency required
a working solution that reads sechorse.csv and produces sectional.csv
Qualification / proof required before selection
When responding, please provide:
a brief explanation of how you will approach the extraction
confirmation that the script will run locally in PHP
confirmation that sectional.csv will be overwritten, not appended
confirmation that unmatched horses will be silently skipped
confirmation that you can map the input sample file into the exact output structure
ideally a short explanation of how you would handle JavaScript-rendered content on ATR
Acceptance criteria
The project will be considered complete when:
the solution runs locally on my machine
it reads sechorse.csv
it extracts sectional information from ATR
it uses the Sectional Times tab
it generates sectional.csv
the output matches the supplied sample layout exactly
the output file is replaced on each run
unmatched horses are skipped silently
Ideal developer
I am looking for someone who has experience with:
PHP scraping or browser automation
CSV input/output handling
dynamic website interaction
reliable local-script development
clean, maintainable code
Chris P.
100% (2)Projects Completed
2
Freelancers worked with
2
Projects awarded
57%
Last project
1 Sep 2018
United Kingdom
New Proposal
Login to your account and send a proposal now to get this project.
Log inClarification Board Ask a Question
-

- Can you confirm whether ATR’s “Sectional Times” data is always visible after page load, or does it require additional user interaction (clicks/tabs/authentication) that we should replicate in automation?
- Should the matching logic prioritize exact horse name matches only, or do you expect fuzzy matching (handling variations in spelling, special characters, or duplicates)?
- Are there any specific race conditions we should filter out (e.g., race types, dates, or only recent races), or should the script attempt to extract all available sectional data per horse?
1152250
We collect cookies to enable the proper functioning and security of our website, and to enhance your experience. By clicking on 'Accept All Cookies', you consent to the use of these cookies. You can change your 'Cookies Settings' at any time. For more information, please read ourCookie Policy
Cookie Settings
Accept All Cookies