Allows clients to specify exactly what data they need, and receives only that data
Uses a single endpoint to access multiple resources
Has its own query language that allows for complex data fetching and manipulation
Can support real-time updates via subscriptions
Can be more efficient than REST in certain situations, particularly for mobile devices with limited bandwidth
Caching can be more fine-grained and easier to manage than with REST
Requires more setup and configuration than REST, and may require more expertise to use effectively