How to Send a GET Request from PHP

In PHP, you can send GET requests to retrieve data from external APIs or web services using several builtin methods. Each approach offers different levels of functionality and control over the request process.

Using file_get_contents()

The simplest method for sending GET requests uses the file_get_contents() function, which is ideal for basic requests without custom headers or complex configurations ?

<?php
$url = 'https://api.github.com/users/octocat';
$response = file_get_contents($url);

if ($response !== false) {
    echo $response;
} else {
    echo "Error: Unable to fetch data";
}
?>

Note: Ensure that allow_url_fopen is enabled in your PHP configuration for this method to work with remote URLs.

With Context Options

You can customize the request by creating a context with specific options ?

<?php
$url = 'https://api.github.com/users/octocat';
$context = stream_context_create([
    'http' => [
        'method' => 'GET',
        'header' => 'User-Agent: My PHP App\r<br>'
    ]
]);

$response = file_get_contents($url, false, $context);
echo $response;
?>

Using cURL

cURL provides more control and flexibility for HTTP requests, including error handling, custom headers, and timeout settings ?

<?php
$url = 'https://api.github.com/users/octocat';

// Initialize cURL
$curl = curl_init();

// Set cURL options
curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTPHEADER => [
        'User-Agent: My PHP App',
        'Accept: application/json'
    ]
]);

// Execute request
$response = curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

// Check for errors
if (curl_errno($curl)) {
    echo 'cURL Error: ' . curl_error($curl);
} else {
    echo "HTTP Code: $httpCode<br>";
    echo $response;
}

curl_close($curl);
?>

Using Guzzle HTTP Client

Guzzle is a powerful thirdparty library that provides an objectoriented interface for HTTP requests ?

Installation: Install Guzzle using Composer: composer require guzzlehttp/guzzle

<?php
require_once 'vendor/autoload.php';

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

$client = new Client();
$url = 'https://api.github.com/users/octocat';

try {
    $response = $client->request('GET', $url, [
        'headers' => [
            'User-Agent' => 'My PHP App',
            'Accept' => 'application/json'
        ],
        'timeout' => 30
    ]);
    
    echo "Status Code: " . $response->getStatusCode() . "<br>";
    echo $response->getBody()->getContents();
    
} catch (RequestException $e) {
    echo "Error: " . $e->getMessage();
}
?>

Comparison

Method Complexity Error Handling Custom Headers Best For
file_get_contents() Simple Basic Limited Simple requests
cURL Moderate Excellent Full support Most scenarios
Guzzle Objectoriented Excellent Full support Complex applications

Conclusion

Use file_get_contents() for simple GET requests, cURL for more control and builtin functionality, or Guzzle for modern objectoriented HTTP client features. Always implement proper error handling when working with external APIs.

Updated on: 2026-03-15T10:31:41+05:30

11K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements