Make sure that britischcycling.org.uk is allowing you to scrape the data.
Then:
The URL contains the eventId, in your example it will be 141520.
With that eventId that website requests this URL: https://www.britishcycling.org.uk/events_version_2/ajax_get_organisation_events?event_id=141520
As you can see the 141520 number is all what will change.
The problem is that you will receive a full HTML page. Without the contents you are seeking. By adding the X-Requested-With: XMLHttpRequest
header you will receive the right data.
Here is the PHP-code (generated with Postman):
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.britishcycling.org.uk/events_version_2/ajax_get_organisation_events?event_id=146685",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"x-requested-with: XMLHttpRequest"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}